服务器端的Netscape Enterprise Server 和Active Server Page(ASP)都曾经支持javaScript 但
它主要还是web浏览器使用的客户端脚本语言.目前,javaScript主要用于帮助开发者与网页和web浏览器窗口本身进行交互。
不太严格的说,javaScript是基于Java的,虽然JavaScript 与Java的语法和程序设计方法都很相似,但是它并非java的简化版本
相反 JavaScript是一种独立的语言,它存在全世界所有的web浏览器中,能增强用户与web站点和web应用程序之间的交互。
JavaScript出现是在1995年首次出现的,当时的主要目的是处理一些输入的有效性验证,而在此之前是留给诸如Perl之类的服务器端语言来完成的
之前,要确定一个特定的字段是否空缺或者输入的值是否无效, 必须与服务器进行往返的交互,当时的网络是使用28.8kbit/s的调制解调器来连接到网络
即便这时网页已经不断变得更大和更复杂。而更加加剧用户的痛苦是,仅仅为了有效性验证,不断的往返服务器端。
一个JavaScript实现是由以下3个不同的部分组成。
Java Script 是核心ECMAScript+文档对象模型DOM+浏览器对象模型BOM
ECMAScript 核心
不与浏览器绑定,实际上,也没有提到用于任何用户输入输出的方法,(与C语言不同,它需要依赖外部的库来完成这类任务)
ECMAScript可以为不同种类的宿主环境提供核心的脚本编程能力,因此核心的脚本语言是与任何特定的宿主环境分开进行规定的......
web浏览器对于ECMAScript来说是一个宿主环境,但他不是唯一的宿主环境。事实上,还有不计其数的其他各种环境,(例如Nombas的scriptEase和Macromedia同时用在Flash与Director MX中ActionScript)可以容纳ECMAScript描述了以下内容:
语法
类型
语句
关键字
保留字
运算符
对象
ECMAScript仅仅是一个描述,它定义了Script语言的规范
DOM文档对象类型 是HTML和XML的应用程序接口API DOM将整个页面的规划成由节点层级构成的文档,HTML和XM页面都是一个节点的衍生物。
<html>
<head>
<title>Sample page </title>
</head>
<body>
<p>Hello World!</p>
</bodty>
</html>
这段代码可以用DOM绘制成一个节点层次图
html
head
title
sample page
body
p
Hello World!
DOM通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用DOM API可以轻松的删除、添加和替换节点,由于NetScape和微软各自修改自己的DHTML,从而结束了Web开发者值编写一个HTML页面就能在所有浏览器中访问的时期,为了保持Web的跨平台特性,W3C制定DOM。
DOM的各个Level1 DOM Core 和DOM HTML 前者提供XML的文档结构图,以方便访问和操作文档的任意部分;后者添加了一些HTML专用的对象和方法,从而扩展了DOM Core
DOM level1 只有一个目标 规划文档的结构,DOM Level2的目标就广泛多了。对原始DOM的扩展了对鼠标和用户界面事件(DHTML对此有丰富的支持)、范围、遍历
(重复执行DOM文档的方法)的支持。由Level1引入的原始DOM Core也加入了对XML命名空间的支持。
DOM Level2 引入几种新的DOM新模块,用于处理新的接口类型:
DOM视图------描述跟踪文档的各种视图(即CSS样式化之前和CSS样式化之后的文档)的接口
DOM事件-------描述事件的接口
DOM样式--------描述处理基于CSS样式的接口
DOM遍历和范围------描述遍历和操作文档树的接口
DOM Level3 引入以统一方式载入和保存文档的方法(包含在新模块 DOM Load and Save 中)以及验证文档(DOM validation)的方法,进一步扩展DOM
leve3中 DOM Core 被扩展为支持所有的XML1.0特性,包括XML infoset 、XPath和XML Base。
其他的DOM
除了DOM Core 和DOM HTML之外,还有其他几种语言发布了自己的DOM的标准,这些语言都是基于XML的,每种DOM都给对应语言添加了特定的方法和接口
1.可缩放矢量图形(SVG)1.0
2.数学标记语言(MathML)1.0
3.同步多媒体集成语言(SMIL)
Mozilla的XML用户界面语言XUL不过,只有上面列出的几种语言是W3C的推荐标准
Web浏览器中的DOM支持
DOM在被Web浏览器开始实现之前就已经是一种标准。IE首次尝试支持DOM是在5.0版本中,不过其实直到5.5版本才具有真正的DOM支持,IE5.5实现了DOM level1
Netscape 直到Netscape6 (Mozilia0.6.0)才引入DOM支持,目前,Mozilia具有最好的DOM支持,实现了完整的level1、几乎所有的leve2以及一部分的leve3
BOM 浏览器对象模型
IE3.0和NetScape Navigator3.0提供了一种特性 BOM,可以对浏览器窗口进行访问和操作。使用BOM,开发者可以移动窗口,改变状态栏中的文本,以及执行其他与页面内容不直接相关的动作,使BOM独树一帜,又令人怀疑的地方在于,它只是javaScript实现的一部分,没有任何相关的标准
BOM 主要是处理浏览器的窗口和框架 不过通常浏览器特定的javaScript 扩展都被看作BOM的一部分,这些扩展包括
弹出新的浏览器窗口;
移动、关闭浏览器窗口,以及调整窗口的大小
提供web浏览器详细信息的导航对象;
提供装载到浏览器中页面的详细信息的屏幕对象;
对cookie的支持
IE扩展了BOM,加入了ActiveXObject类,可以通过JavaScript 实例化ActiveX对象。
由于没有相关的BOM标准,每种浏览器都有自己的BOM实现,有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他的对象定义自己的属性和方法。
目前总结来说
JavaScript 的核心ECMAScript 描述了该语言的语法和基本对象
DOM描述了处理网页内容的方法和接口
BOM描述了与浏览器进行交互的方法和接口
ECMAScript 的语法
1.区分大小写
变量、函数名、运算符以及其他一切东西都是区分大小写的,也就是说,变量 test不同于变量Test.
2.变量是弱类型的
var color ="red";
var num = 25;
var visible = true;
3.每行结尾的分号可有可无。java、C和Perl都要求每行代码以分号;结束才符合语法。
ECMAScript则允许开发者自行决定是否以分号结束一行代码。如果没有分号,ECMAScript就把这行代码的结尾看作是该语句的结尾,前提是这样没有破坏代码的语义,
最好的代码编写习惯总是加入分号,因为没有分号,有些浏览器就不能正常运行,不过根据ECMAScript标准,下面的语句都是正确的
var color =''red"
var color1="blue";
4.注释与Java、C、和PHP语言的注释相同ECMAScript借用了这些语言的注释语法,有两种类型的注释,单行注释
//
多行注释/* 注释内容 */
//this is a single-line comment
/* this is a multiline comment */
5.括号表明代码块
if(test1=="red") {
test1="blue";
alert(test1);
}
ECMAScript中的变量是用var运算符(variable的缩写)加变量名定义的,例如:
var test = "hi";
在这个例子中,声明了变量test,并把它的值初始化为“hi”(字符串)。由于ECMAScript是弱类型的,所以解释程序会为test自动创建一个字符串值,无需明确的类型声明
还可以用一个var 语句定义两个或多个变量
var test ="hi",test2 = "hola";
var test3="hi",age = 25;
与java不同的数据类型,在ECMAScript中这样定义也是完全合法的。
var test;
弱类型可以实现就是一个变量初始化后仍可以改变变量的类型。
var test ="hi"; //outputs "hi"
alert(test);
test = 55;
alert(test); //outputs "55"
这段代码将毫无问题的输出字符串值和数字值,但是使用变量时,好的编码习惯是始终存放相同类型的值