一直想系统学习一下JavaScript,总是浅尝辄止,在遇到问题的时候才去研究一下。刚好要看"JavaScript 核心技术"这本书,就顺便记录一下学习的内容,也许有一些心得体会,也许只是简单的记录。
它的历史我很感兴趣,原来JavaScript的这个令无数人混淆的命名源于Netscape和Sun的合作。据介绍,JavaScript最初被开发是为了进行LiveConnect服务器端的开发。Netscape当时想要一种能实现与服务器端构件接口的脚本语言,于是创造了一门语言,起名叫做"LiveScript"。后来,在和Sun的合作之后,Netscape的工程师将LiveScript改名为JavaScript,尽管它过去和现在都和Java没有关系。关于JavaScript的产生可以参考"JavaScript: How Did We Get Here?"(O'Reilly Network,2001年4月).后来,微软为了不在技术上落后,也发布了自己的类JavaScript语言版本:JScript。于是开始了跨浏览器的兼容问题。比较统一的版本就是1997年6月发布的ECMAScript规范的第一个版本ECMA-262,现在的大部分浏览器都能支持这个版本,当然有很多老版本的JavaScript仍在使用,各个浏览器还远远没有统一标准。
对于JavaScript的用途,其实很多,验证表单字段、设置和检索Web cookie、动态的更改页面元素的外观、隐藏和显示元素、在页面上移动元素、捕捉用户事件并相应的调整页面以及在不离开本页的情况下与服务器端应用程序进行连接(Ajax)等。
现在开始正式接触JavaScript。首先JavaScript几乎总是嵌入到另一种语言环境中,比如HTML和XHTML,也就是说你不能在页面中随心所欲的加入JS。首先必须存在的是Script元素标记。代码如下:
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html>
4 <head>
5 <title> Example 1 </title>
6 <meta http-equiv="Content-Type" content="text/html;charset=utf-t">
7
8 <script type="text/javascript">
9 var dt = Date();
10
11 //say hello to the world
12 var msg = "Hello,World! Today is " + dt;
13 alert(msg);
14 </script>
15 </head>
16
17 <body onload="hello()">
18
19 </body>
20 </html>
并非所有嵌入到Web页面的脚本都是JavaScript,script标记中包含了一个定义脚本的类型的属性。type属性的其它允许值为:
- text/ecmascript
- text/jscript
- text/vbscript
- text/vbs
第一个是JavaScript的另一种说法,接下来是Microsoft在IE中实现的一个JavaScript变种,最后两个是VbScript。
所有的这些type值都描述了内容的MIME类型。MIME也就是多功能邮件传递扩展标准(Multipurpose Internet Mail Extension),这是一个确定内容如何编码(如text文本)以及内容的特定格式是什么(javascript)的方式。(此概念是从电子邮件技术中产生的,但它很快扩展到其它的因特网用途中,比如指明一个脚本块中的脚本类型。)
提供了MIME类型,那些能够处理这一类型的浏览器就会执行它,而不那处理这类型的浏览器就会跳过这一部分。这确保了脚本只由那些能够处理它的应用程序访问。
script标记有几个有效的属性,如language、src、defer和charset。以前的language属性用的很多,如
<script type="text/javascript" language="javascript1.2">
但HTML4.01反对使用language属性,这其中涉及一项最早的跨浏览器技术。
如:
1 <script src="ns4_obj.js" language="javascript1.2"></script>
2
3 <script src="ie4_obj.js" language="jscript"></script>
这样来区分不同的浏览器加载不同的js文件,很勉强。现在,人们偏好转向一种叫做对象检测的方式,原理是测试某个特定的对象或对象的属性是否存在,如果存在,执行1,否则执行2。
chasert属性定义了脚本使用的字符编码方式。除非你需要使用的字符编码方式与文档所定义的字符编码方式不同,否则这一属性通常不用设置。
defer有时候很有用。如果设置defer="defer"的话,它会告诉浏览器:脚本不会生成任何文档内容,浏览器可以继续处理页面的其它部分,当页面处理和显示完成后再返回到脚本。在使用一个较大的JavaScript语句块或引用一个较大的JS库时,使用这一属性有助于加快页面加载的速度。
最后一个属性是src,它主要指向外在的JS库或JS文件,推荐把大部分或者所有的JS代码写在JS文件中,如果可以的话,然后用src属性加载,达到页面结构和行为的分离。如下:
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html>
4 <head>
5 <title> Example 1 </title>
6 <meta http-equiv="Content-Type" content="text/html;charset=utf-t">
7
8 <script type="text/javascript" src="example.js"></script>
9 </head>
10 <body onload="hello()">
11 </body>
12 </html>
posted on 2008-07-21 23:01
连夜雨 阅读(342)
评论(3) 编辑 收藏 所属分类:
JavaScript