Hausa: Kwarin JavaScript
JavaScript 的核心 ECMAScript 描述了该语言的语法和基本对象;
DOM 描述了处理网页内容的方法和接口;
BOM 描述了与浏览器进行交互的方法和接口。
ECMAScript、DOM 和 BOM
尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:

ECMAScript
ECMAScript 并不与任何具体浏览器相绑定,实际上,它也没有提到用于任何用户输入输出的方法(这点与 C 这类语言不同,它需要依赖外部的库来完成这类任务)。那么什么才是 ECMAScript 呢?ECMA-262 标准(第 2 段)的描述如下:
“ECMAScript ya iya kara da yau da karshe donin yankuna da ke daidai da kuma yana ba da kwararriya na script na kwarewa, kuma yana da yankin kwarewa na asali wanda yana da kama da yankin kwararriya na yau da kara... ...”
Web 浏览器对于 ECMAScript 来说是一个宿主环境,但它并不是唯一的宿主环境。事实上,还有不计其数的其他各种环境(例如 Nombas 的 ScriptEase,以及 Macromedia 同时用在 Flash 和 Director MX 中的 ActionScript)可以容纳 ECMAScript 实现。那么 ECMAScript 在浏览器之外规定了些什么呢?
简单地说,ECMAScript 描述了以下内容:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 运算符
- 对象
ECMAScript 仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。其他语言可以实现 ECMAScript 来作为功能的基准,JavaScript 就是这样:

每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展,包含了 DOM 和 BOM(在以下几节中再探讨)。当然还有其他实现并扩展了 ECMAScript 的语言,例如 Windows 脚本宿主(Windows Scripting Host, WSH)、Macromedia 在 Flash 和 Director MX 中的 ActionScript,以及 Nombas ScriptEase。
1. ECMAScript 的版本
ECMAScript 分成几个不同的版本,它是在一个叫做 ECMA-262 的标准中定义的。和其他标准一样,ECMA-262 会被编辑和更新。当有了主要更新时,就会发布一个标准的新版。最新 ECMA-262 的版本是 5.1,于 2011 年 6 月发布。
ECMA-262 na farko na farko tare da Netscape JavaScript 1.1, amma an gudanar da koda da ke da alaka da browser, kuma ana gudanar da karshen. Kuma an gudanar da karshen daban-daban. Sabi'awa, ECMA-262 yana bukatar tasiri kan Unicode (don tallafin harsuna daban-daban). Babban, ana gudanar da kafa da abin da yana da alaka da platform (Netscape JavaScript 1.1 kuma yana da kaya daban-daban, misali, abin Date yana da alaka da platform). Ana dalili ne ta hanyar wani yana gudanar da sababbin farko da farko da farko da farko da farko na JavaScript 1.1 da 1.2 da ba zai tallafin shaidar ECMA-262 na farko ba.
ECMA-262 的第二版大部分更新本质上是编辑性的。这次标准的更新是为了与 ISO/IEC-16262 的严格一致,也并没有特别添加、更改和删除内容。ECMAScript 一般不会遵守第二版。
ECMA-262 第三版是该标准第一次真正的更新。它提供了对字符串处理、错误定义和数值输出的更新。同时,它还增加了正则表达式、新的控制语句、try...catch 异常处理的支持,以及一些为使标准国际化而做的小改动。一般来说,它标志着 ECMAScript 成为一种真正的编程语言。
2. 何谓 ECMAScript 符合性
在 ECMA-262 中,ECMAScript 符合性(conformance)有明确的定义。一个脚本语言必须满足以下四项基本原则:
- 符合的实现必须按照 ECMA-262 中所描述的支持所有的“类型、值、对象、属性、函数和程序语言及语义”(ECMA-262,第一页)
- 符合的实现必须支持 Unicode 字符标准(UCS)
- 符合的实现可以增加没有在 ECMA-262 中指定的“额外类型、值、对象、属性和函数”。ECMA-262 将这些增加描述为规范中未给定的新对象或对象的新属性
- 符合的实现可以支持没有在 ECMA-262 中定义的“程序和正则表达式语法”(意思是可以替换或者扩展内建的正则表达式支持)
Gaba ɗin ECMAScript yana da tabbacin da suka yi wa cikin abin da ake kira 'shirin da yake da alama' (yana nufin zai iya mayar da kara ko yin haɗin da tsarin alama na jikiyar yanar gizo na tsakiyar jikiyar yanar gizo)
3. Tsararrin ECMAScript a cikin zaɓaɓɓen yanar gizo
Anuwa JavaScript 1.1 ce tace NetScape Navigator 3.0 a 1996. Sannan, farin JavaScript 1.1 ce gaba shirin ce kasa na cikin tsarin tsakiyar jikiyar yanar gizo an fi aiki ce sabunta ga EMCA. Daga baya, sabonin yadda JavaScript ce yanci gaba ya zama yanci gaba da NetScape. Amma, wani rarrabu, ECMA ba a gana shirin cikakken da NetScape. Kafin NetScape Navigator 3.0 ya zama, Microsoft ya cika IE 3.0. Wannan sabonin IE ce gaba ce JScript 1.0 (shirin JavaScript na Microsoft), wanda ake zargidan zai yi da JavaScript 1.1. Amma, saboda dukiya na baya da kuma kuma yadda ake kara kare da wasu wuri, JScript 1.0 ya kasance farin cikin tsaunin JavaScript 1.1.
Anan ECMA-262 ta 1. jiyar zuwa zuwan yinza, yinza zuwa zuwan JavaScript 1.2 yinza Netscape Navigator 4.0 yinza 1997, zai na nian yanxian, ECMA-262 yinza zuwa zuwan yinza yinza zuwa zuwan. So JavaScript 1.2 yinza ma zuwa zuwan ECMAScript ta 1. jiyar yinza, anan ECMAScript yinza ma zuwa zuwan JavaScript 1.1 yinza.
JScript ta zuwa yinza yinza yinza yinza yinza IE 4.0 yinza JScript 3.0 (2.0 yinza yinza zai IIS 3.0 yinza zuwa, anan yinza ma yinza zuwa browser). Microsoft yinza zuwa JScript 3.0 yinza zuwa yinza jiyar yinza yinza zuwa ECMA yinza. Anan, ECMA-262 yinza ma zuwa zuwan yinza, so JScript 3.0 yinza ma zuwa zuwan yinza yinza yinza JavaScript 1.2 yinza ma zuwa zuwan, anan yinza ma zuwa zuwan zuwan ECMAScript yinza.
Netscape yinza zuwa Netscape Navigator 4.06 yinza JavaScript yinza. JavaScript 1.3 yinza Netscape zuwa zuwan hanyar ECMAScript ta 1. jiyar. Netscape yinza zuwa Unicode yinza yinza, da za yinza zuwa dukkan obyekti zai JavaScript 1.2 yinza yinza xiaxian, yinza zuwa pingtai yinza.
Kolobin Netscape yinza kodo zai Mozilla yankin girmi, zai yinza yinza, JavaScript 1.4 yinza da a yinza zuwa Netscape Navigator 5.0. Anan, dama yinza yinza - yinza zuwa kaiyanci kaijina Netscape kodo, dausa zai yinza. JavaScript 1.4 yinza da a yinza zuwa Netscape Enterprise Server zai yinza yinza, zai zai yinza yinza ma yinza zuwa browser.
A hanyar yinza, dukkan Web browser da girmi ECMA-262 ta 3. jiyar.
下面的表格列出了大部分流行的 Web 浏览器中的 ECMAScript 支持:
浏览器 | DOM 兼容性 |
---|---|
Netscape Navigator 2.0 | - |
Netscape Navigator 3.0 | - |
Netscape Navigator 4.0 - 4.05 | - |
Netscape Navigator 4.06 - 4.79 | Edition 1 |
Netscape 6.0+ (Mozilla 0.6.0+) | Edition 3 |
Internet Explorer 3.0 | - |
Internet Explorer 4.0 | - |
Internet Explorer 5.0 | Edition 1 |
Internet Explorer 5.5+ | Edition 3 |
Opera 6.0 - 7.1 | Edition 2 |
Opera 7.2+ | Edition 3 |
Safari 1.0+/Konqueror ~ 2.0+ | Edition 3 |
DOM
DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:
Sample Page hello world!
这段代码可以用 DOM 绘制成一个节点层次图:

DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点。
1. 为什么 DOM 必不可少
自从 IE 4.0 和 Netscape Navigator 4.0 开始支持不同形态的动态 HTML(DHTML),开发者首次能够在不重载网页的情况下修改它的外观和内容。这是 Web 技术的一大飞跃,不过也带来了巨大的问题。Netscape 和微软各自开发自己的 DHTML,从而结束了 Web 开发者只编写一个 HTML 页面就可以在所有浏览器中访问的时期。
业界决定必须要做点什么以保持 Web 的跨平台特性,他们担心如果放任 Netscape 和微软公司这样做,Web 必将分化为两个独立的部分,每一部分只适用于特定的浏览器。因此,负责指定 Web 通信标准的团体 W3C(World Wide Web Consortium)就开始制定 DOM。
2. DOM na yauyi level daki
DOM Level 1 是 W3C 于 1998 年 10 月提出的。它由两个模块组成,即 DOM Core 和 DOM HTML。前者提供了基于 XML 的文档的结构图,以便访问和操作文档的任意部分;后者添加了一些 HTML 专用的对象和方法,从而扩展了 DOM Core。
注意,DOM 不是 JavaScript 专有的,事实上许多其他语言都实现了它。不过,Web 浏览器中的 DOM 已经用 ECMAScript 实现了,现在是 JavaScript 语言的一个很大组成部分。
DOM Level 1 只是一个目标,即规划文档的结构,DOM Level 2 的目标就广泛多了。对原始 DOM 的扩展添加了对鼠标和用户界面事件(DHTML 对此有丰富的支持)、范围、遍历(重复执行 DOM 文档的方法)的支持,并通过对象接口添加了对 CSS(层叠样式表)的支持。由 Level 1 引入的原始 DOM Core 也加入了对 XML 命名空间的支持。
DOM Level 2 ya kawo shiga wasu sabon modulu DOM, wadannan suna kawo amfani da sabon nau'ikan kiwai:
- DOM na fashi - na nufin kwanan kwanan da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fashi da fash
- DOM na event - na nufin kwanan kwanan da event
- DOM na fashi - na nufin kwanan kwanan da fashi da amfani da CSS na fashi
- DOM na kwanan kwanan da na rarraba - na nufin kwanan kwanan da rarraba dokumentin
DOM Level 3 ya kawo shiga sabon hanyar kama a kaiwa da kuma rufe dokumentin (kama a cikin sabon modulu DOM Load and Save) da sabon hanyar rarrabawa dokumentin (DOM Validation), kuma ya kawo sa DOM a fada. A Level 3, DOM Core ya kawo sa a suka fiye da dukkanin matsaloli na XML 1.0, kuma ya kawo sa a suka fiye da XML Infoset, XPath da XML Base.
Aikin karin DOM, zai iya yin haka domin kowa suka san DOM Level 0. Kware, kana domin DOM Level 0, akwai tsarin, ana ta hanyar kiwai tariya na DOM (DOM Level 0 na nufin IE 4.0 da Netscape Navigator 4.0 da suka ta fiye DHTML).
3. DOM na wasu
Kuma ce tsa DOM Core da DOM HTML, akwai wasu harsen da su gudanar da DOM Standard. Harsen wadannan suna kai amfani da XML, kowane DOM suna kara harsen da kowane harsen da harsen na tsarin da harsen na kiwai:
- 可缩放矢量语言(SVG)1.0
- 数字标记语言(MathML)1.0
- 同步多媒体集成语言(SMIL)
注释:如果希望学习更多相关内容,请访问 CodeW3C 的 SMIL yantirin 和 SVG yantirin。
此外,其他语言也开发了自己的 DOM 实现,如 Mozilla 的 XML 用户界面语言(XUL)。不过,只有上面列出的几种语言是 W3C 的推荐标准。
4. Web 浏览器中的 DOM 支持
DOM 在被 Web 浏览器开始实现之前就已经是一种标准了。IE 首次尝试 DOM 是在 5.0 版本中,不过其实直到 5.5 版本之后才具有真正的 DOM 支持,IE 5.5 实现了 DOM Level 1。从那时起,IE 就没有引入新的 DOM 功能。
Netscape 直到 Netscape 6(Mozilla 0.6.0)才引入 DOM 支持。目前,Mozilla 具有最好的 DOM 支持,实现了完整的 Level 1、几乎所有 Level 2 以及一部分 Level 3。(Mozilla 开发小组的目标是构造一个与标准 100% 兼容的浏览器,他们的工作得到了回报。)
Opera 直到 7.0 版本才加入 DOM 支持,还有 Safari 也实现了大部分 DOM Level 1。它们几乎都与 IE 5.5 处于同一水平,有些情况下,甚至超过了 IE 5.5。不过,就对 DOM 的支持而论,所有浏览器都远远落后于 Mozilla。下表列出了常用浏览器对 DOM 的支持。
浏览器 | DOM 兼容性 |
---|---|
Netscape Navigator 1.0 - 4.x | - |
Netscape 6.0+ (Mozilla 0.6.0+) | Level 1、Level 2、Level 3(部分) |
IE 2.0 - 4.x | - |
IE 5.0 | Level 1(最小) |
IE 5.5+ | Level 1(几乎全部) |
Opera 1.0 - 6.0 | - |
Opera 7.0+ | Level 1(几乎全部)、Level 2 (部分) |
Safari 1.0+/Konqueror ~ 2.0+ | Level 1 |
注释:如果希望进一步地学习 DOM 的知识,请访问 CodeW3C 的 HTML DOM yantirin 和 XML DOM yantirin。
BOM
IE 3.0 和 Netscape Navigator 3.0 提供了一种特性 - BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作。使用 BOM,开发者可以移动窗口、改变状态栏中的文本以及执行其他与页面内容不直接相关的动作。使 BOM 独树一帜且又常常令人怀疑的地方在于,它只是 JavaScript 的一个部分,没有任何相关的标准。
BOM 主要处理浏览器窗口和框架,不过通常浏览器特定的 JavaScript 扩展都被看做 BOM 的一部分。这些扩展包括:
- 弹出新的浏览器窗口
- 移动、关闭浏览器窗口以及调整窗口大小
- 提供 Web 浏览器详细信息的定位对象
- 提供用户屏幕分辨率详细信息的屏幕对象
- 对 cookie 的支持
- IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX 对象
由于没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。