作者:哎自己哈 | 来源:互联网 | 2023-08-21 14:38
目录1.JavaScript简介1.1JavaScript历史回顾历史进程:1.2ECMA和ECMASrcipt1.3JavaScript实现1.3.1ECMAS
目录
1.Javascript简介
1.1Javascript历史回顾
历史进程:
1.2ECMA和ECMASrcipt
1.3Javascript实现
1.3.1 ECMAScript
1.3.2什么是 ECMAScript兼容 ?
1.3.3各大浏览器对ECMA的兼容
1.4DOM
1.4.1DOM级别
1.4.2 Web浏览器对 DOM的支持
1.5BOM浏览器对象模型
1.Javascript简介
1.1Javascript历史回顾
Javascript诞生于 1995年。当时,它的主要目的是处理输入验证操作。在 Javascript 问世之前,必须把表单数据发送到服务器端才能确定用户是否 没有填写某个必填域,是否输入了无效的值。Netscape Navigator希望通过 Javascript来解决这个问题。
如今,Javascript的用途早 已不再局限于简单的数据验证,而是具备了与浏览器窗口及其内容等几乎所有方面交互的能力。
历史进程:
Netscape公司为Navigator浏览器开发的的liveScript语言,
为了搭上Sun公司java语言(媒体热炒)的顺风车,改名为Javascript。
微软的浏览器(IE)为了和Navigator浏览器竞争,向自家浏览器加入了名为Jscript(与Javascript区分)的脚本语言。
Netscape的Javascript,微软的JScript。
1.2ECMA和ECMASrcipt
ECMA(协会):欧洲计算机制造商协会(European Computer Manufacturers Association)。该协会指定 39号技术委员会(TC39,Technical Committee #39) 负责“标准化一种通用、跨平台、供应商中立的脚本语言的语法和语义”。
ECMA-262(标准):——定义一种名为 ECMAScript(发 音为“ek-ma-script”)的新脚本语言的标准。
ECMAScript(脚本语言):是一种由ECMA通过ECMA-262标准化的脚本程序设计语言。
ECMAScript是Javascript的核心,而不是Javascript的全部。
1.3Javascript实现
虽然 Javascript 和 ECMAScript 通常都被人们用来表达 相同的含义,但 Javascript的含义却比 ECMA-262中规定的 要多得多。没错,一个完整的 Javascript 实现应该由下列三 个不同的部分组成(见图 1-1)。
核心(ECMAScript) 文档对象模型(DOM) 浏览器对象模型(BOM)
1.3.1 ECMAScript
由 ECMA-262(一个标准)定义的 ECMAScript与 Web 浏览器没有依赖关系。这门语言本身并不包含输 入和输出定义。ECMA-262定义的只是这门语言的基础,而在此基础之上可以构建更完善的脚本语言。
Web 浏览器只是 ECMAScript 实现可能的宿主环境之一。
宿主环境提供了:
1.基本的 ECMAScript 实现
2.该语言的扩展,以便语言与环境之间对接交互。而这些扩展——如 DOM,则利用 ECMAScript的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。其他 宿主环境包括 Node(一种服务端 Javascript平台)和 Adobe Flash。
既然 ECMA-262 标准没有参照 Web 浏览器,那它都规定了些什么内容呢?
语法 类型 语句 关键字 保留字 操作符 对象
ECMAScript就是对实现该标准规定的各个方面内容的语言的描述。
Javascript实现了 ECMAScript, Adobe ActionScript同样也实现了 ECMAScript。
1.3.2什么是 ECMAScript兼容 ?
ECMA-262给出了 ECMAScript兼容的定义。要想成为 ECMAScript的实现,则该实现必须做到:
- 支持 ECMA-262描述的所有“类型、值、对象、属性、函数以及程序句法和语义”
- 支持 Unicode字符标准。 此外,兼容的实现还可以进行下列扩展。
- 添加 ECMA-262没有描述的“更多类型、值、对象、属性和函数”。ECMA-262所说的这些新增 特性,主要是指该标准中没有规定的新对象和对象的新属性。
- 支持 ECMA-262 没有定义的“程序和正则表达式语法”。(也就是说,可以修改和扩展内置的正 则表达式语法。)
上述要求为兼容实现的开发人员基于 ECMAScript开发一门新语言提供了广阔的空间和极大的灵活 性,这也从另一个侧面说明了 ECMAScript受开发人员欢迎的原因
1.3.3各大浏览器对ECMA的兼容
到了 2008年,五大主流 Web 浏览器(IE、Firefox、Safari、Chrome和 Opera)全部做到了与 ECMA-262兼容。IE8是第一个着手实现 ECMA-262第 5版的浏览器,并在 IE9中提供了完整的支持。Firefox 4也 紧随其后做到兼容
1.4DOM
文档对象模型(DOM,Document Object Model)是针对 XML但经过扩展用于 HTML的应用程序编程接口(API,Application Programming Interface)。DOM把整个页面映射为一个多层节点结构。HTML 或 XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。
通过 DOM 创建的这个表示文档的树形图,开发人员获得了控制页面内容和结构的主动权。借助 DOM提供的 API,开发人员可以轻松自如地删除、添加、替换或修改任何节点。
如果想继续保持 Web 跨平台的天性,就必须额外多做一些工作。而人们真正担 心的是,如果不对 Netscape和微软加以控制,Web 开发领域就会出现技术上两强割据,浏览器互不兼容的局面。此时,负责制定 Web 通信标准的 W3C(World Wide Web Consortium,万维网联盟)开始着 手规划 DOM。
1.4.1DOM级别
DOM1级(DOM Level 1)于 1998年 10月成为 W3C的推荐标准。
DOM1级由两个模块组成:DOM 核心(DOM Core)和 DOM HTML。其中,DOM核心规定的是如何映射基于 XML的文档结构,以便 简化对文档中任意部分的访问和操作。DOM HTML 模块则在 DOM 核心的基础上加以扩展,添加了针 对 HTML的对象和方法。
请读者注意,DOM并不只是针对 Javascript的,很多别的语言也都实现了 DOM。 不过,在 Web浏览器中,基于 ECMAScript实现的 DOM的确已经成为 Javascript这 门语言的一个重要组成部分。
DOM2级在 原来 DOM的基础上又扩充了(DHTML一直都支持的)鼠标和用户界面事件、范围、遍历(迭代 DOM 文档的方法)等细分模块,而且通过对象接口增加了对 CSS(Cascading Style Sheets,层叠样式表)的 支持。DOM1级中的 DOM核心模块也经过扩展开始支持 XML命名空间。 DOM2级引入了下列新模块,也给出了众多新类型和新接口的定义。 DOM视图(DOM Views):定义了跟踪不同文档(例如,应用 CSS之前和之后的文档)视图的 接口; DOM事件(DOM Events):定义了事件和事件处理的接口; DOM样式(DOM Style):定义了基于 CSS为元素应用样式的接口; DOM遍历和范围(DOM Traversal and Range):定义了遍历和操作文档树的接口。
DOM3 级则进一步扩展了 DOM,引入了以统一方式加载和保存文档的方法——在 DOM 加载和保 存(DOM Load and Save)模块中定义;新增了验证文档的方法——在 DOM验证(DOM Validation)模块中定义。DOM3 级也对 DOM 核心进行了扩展,开始支持 XML 1.0 规范,涉及 XML Infoset、XPath 和 XML Base。
1.4.2 Web浏览器对 DOM的支持
目前,支持 DOM已经成为浏览器开发商的首要目标,主流浏览器每次发布新版本都会改进对 DOM 的支持。下表列出了主流浏览器对 DOM标准的支持情况。
1.5BOM浏览器对象模型
Internet Explorer 3和 Netscape Navigator 3有一个共同的特色,那就是支持可以访问和操作浏览器窗 口的浏览器对象模型(BOM,Browser Object Model)。开发人员使用 BOM可以控制浏览器显示的页面 以外的部分。
而 BOM真正与众不同的地方(也是经常会导致问题的地方),还是它作为 Javascript实现 的一部分但却没有相关的标准。这个问题在 HTML5中得到了解决,HTML5致力于把很多 BOM功能写 入正式规范。HTML5发布后,很多关于 BOM的困惑烟消云散。 从根本上讲,BOM只处理浏览器窗口和框架;但人们习惯上也把所有针对浏览器的 Javascript扩展 算作 BOM的一部分。下面就是一些这样的扩展:
弹出新浏览器窗口的功能;
移动、缩放和关闭浏览器窗口的功能;
提供浏览器详细信息的 navigator 对象;
提供浏览器所加载页面的详细信息的 location 对象;
提供用户显示器分辨率详细信息的 screen 对象;
对 COOKIEs的支持;
像 XMLHttpRequest 和 IE的 ActiveXObject 这样的自定义对象。
由于没有 BOM标准可以遵循,因此每个浏览器都有自己的实现。虽然也存在一些事实标准,例如 要有 window 对象和 navigator 对象等,但每个浏览器都会为这两个对象乃至其他对象定义自己的属 性和方法。现在有了 HTML5,BOM实现的细节有望朝着兼容性越来越高的方向发展。