第一章:目标
javascript的目标是给Web页面增加一个额外的可用性层。
js分为6个部分:javascript核心、BOM(浏览器对象模型)、事件、DOM(文档对象模型)、CSS修改、数据检索(XMLHttpRequest)。
他们的任务:核心使得js成为一门编程语言的基础,控制结构变量函数和对
象;BOM给浏览器窗口下达指令,读取cookie,与其他窗口进行通信;事件找出用户执行的动作,并定义这些动作将触发的函数;DOM学习和改变
HTML文档的结构;CSS学习和改变HTML文档的CSS表现;数据检索从服务器下载新的数据而不刷新页面。
所有的脚本都是用核心语言、事件和DOM:等待行动,并更新页面。
ECMA(欧洲计算机制造联合协会)对javascript核心进行标准化(ECMA1.5),这个标准应用到flash、浏览器、服务器以及其他尚未产生的应用上。
W3C(万维网协会)创建了DOM规范,它也包括事件处理和CSS修改的内容。微软仍然没有实现W3C的事件规范,却使用它自己专有的事件模型。
WHAT-WG(Web超文本应用技术工作组)正为BOM标准而工作。
数据检索使用的则是微软的事实标准,W3C为数据检索推出了XMLHttpRequest规范的第一部草案。
<script标签中允许在language="javascript1.2"中指定版本号,但自1.2版本开始Netscape和Explorer 4都宣称支持,因此设置版本号没有意义,事实上根本不需要这个属性。
js遵循严格的安全规范
不允许访问宿主计算机:不能读写除cookie外的文件系统
同源策略:两个窗口的页面的Web域名必须相同,才允许跨窗口通信。同子域下可以通过设置相同的document.domain(必须设置为真实域名的一部分)进行通信。
其他限制:不能读取历史对象的属性(当可以在历史中后退);不能设置文件上传表单域的值;试图关闭窗口时会询问用户;不允许打开一个小于100x100或处于屏幕之外或没有标题栏的新窗口。
javascript的历史
创始人Brendan Eich当时在Netscape工作,js公开的历史从1996.3的Netscape2发布开始。
Eich最初的目标是为Web开发者提供一种简单的方式为页面增加一些交互,这些
脚本从其他页面复制过来并稍作调整就可以使用。最初命名为LiveScript。但Netscape出于市场的考虑选取了一个与当时流行的Java相似的
一个名字,并仓促地要求Eich“使这个语言看起来想Java”,从而误导人们将js视为轻量级的Java版本,看成一个可以拿来搬弄技巧而不值得引起严
谨的程序员注意的轻巧的脚本语言。
第一瘦时期
早期的日子里,浏览器是一个瘦客户端,表单验证和鼠标滑过的效果是令人惊艳的,但它们不允许在客户端大量进行交互,用户被迫与服务端交互。
1996~1999间Netscape与微软的浏览器大战开始,双方都推出自己的
第4版,为争夺CSS规范各不相让。两个浏览器厂商都让javascript可以控制这些CSS声明,于是就可以使用position:absolute
创建一个“层”,然后通过持续地改变top和left似的它在屏幕上移动,这才叫酷!这些小伎俩被冠以DHTML为人所知,即通过javascript来
改变css属性。
为此双方都推出了自己专有的DOM(又称过渡DOM,介于Netscap3DOM和W3CDOM之间),Netscape4支持document.layers,而Explorer支持document.all。
第一个胖阶段
有了这些新特性,客户端增加大量的互动:动画、隐藏和其他视觉效果,javascript的目标转向技术,而不是可用性,js进入胖阶段。
微软在1999年发布Explorer5,相当好地支持了CSS和新的W3CDOM标准。尽管公司和Web开发者尽力挽救,Netscape4还是灭亡了,差不多同一时间,js的第一个胖阶段结束,人们发现的不过是少量的javascript和大量的空话。
CSS变革开始。
第二个瘦阶段
浏览器大战接近尾声的时候,Web开发者们厌倦了大量的编程和变通做法,极度地想从头开始。CSS,而不是javascript,给了他们最好的机会来完全突破过去的束缚。
大概从2003年开始,一部分先锋开始用一种深受CSS革命理念影响的新方式写javascript,javascript第一次深深地潜入到全面的Web开发理论中去,而可访问性问题终于被认识到并着手解决。
无侵入脚本编程提出,但并没有立即征服世界。
第二个胖阶段
从服务器端悄悄地载入小块的数据,唤醒了沉睡多年的技术构思和可用性观
念,Jesse James
Garrett的文章《Ajax:Web应用程序的新方法》开创了Ajax时代,javascript的用途又一次被重新定义,传统web开发者创建的是
瘦的可访问的乱糟糟的js代码,而来自服务端开发的“资深程序员们”创建的是面向对象的,胖的,可访问性差的ajax客户端。焦点又被集中在技术方面,可
用性及为什么要用ajax仍很少被关注,臃肿的库(即框架)与日俱增。
所幸人们都开始同意并遵循已经存在的标准。
2006.5数据显示,目前共有至少134中Ajax框架,我个人认为这股热潮已经到达了顶峰,有谁需要134种程序去做本质上是一样的事呢?
javascript将调整回瘦阶段,那时它的用途也将再次被重新定义,当然某个时期第三个瘦阶段结束后会迎来第三个胖阶段.. 从根本上,这种情况只有当每个人都只认同唯一的javascript用途时才会被打破。