Mwongozo wa JavaScript

Kina kikuu cha JavaScript (ECMAScript) inaeleza lugha ya kina kikuu na vifungo vya kina kikuu;

DOM inaeleza viwango na vifungo vya kina chochote cha kina chochote;

BOM inaeleza viwango na vifungo vya kina chochote cha kina chochote.

ECMAScript, DOM na BOM

Injili ya ECMAScript inaonekana kama standardi muhimu, lakini haukubainishwa kama eneo pekee la JavaScript, bali, haukubainishwa kama eneo pekee linalostandarishwa. Hadi hivyo, mawazo ya kina kikuu ya kina kikuu ni kusambaa kwa kina kikuu 3 kwenye:

JavaScript inahesha ECMAScript, DOM na BOM

ECMAScript

ECMAScript haikubindwa na kina chochote kingine, kwa hivyo haukutambulika kwa sababu ya kipendekezo cha kina kwa kina chochote kwa kipendekezo cha kina chochote (hii inayotangulia lugha kama C ambayo inahitaji kusoma kwenye kina chochote kwa sababu ya kazi za kina chochote). Nini ni ECMAScript? Mawazo ya standardi ya ECMA-262 (kina cha 2) inayotazama kama:

“ECMAScript inayopewa hisia kwenye masheni ya kusoma kwenye kipya kikuu cha programu, kwa hiyo lugha ya kusoma kwenye kipya kikuu ni inayotenganishwa na kipya kwenye kina chochote... ...”

Mazingira wa kusambaa kwa Web browser inaonekana kama mazingira wa kusambaa kwa ECMAScript, lakini hauwa na mazingira pekee. Kwa hivyo, kuna mazingira mengi mengi mengi yenye kina ECMAScript (kama vile ScriptEase ya Nombas, na ActionScript ya Macromedia kwenye Flash na Director MX) ambayo inaweza kusimamia ECMAScript. Kwa hivyo, ECMAScript inakadiri kwa nia gani kwenye browser zaidi?

Kwa ujumbe, ECMAScript inadefini hivi:

  • Marekebisho
  • Aina
  • Matendo
  • Kichwa cha jina
  • Mwengine
  • Mbinu
  • Kipengele

ECMAScript inaonekana kama maelezo, inadefini maelezo ya walauzi ya kitabia kwa sababu, viwango, na kipengele. Walauzi wengine inaweza kumaliza ECMAScript kama kina cha uhariri, kama vile JavaScript.

ECMAScript, JavaScript, ActionScript, ScriptEase

Kila browser ina kipengele cha ECMAScript kwa sababu yake, kwa baadhi ya uhariri, kinaanza kwa DOM na BOM (inaandikwa kwenye majadiliano yaliyofuata). Kwa ujumbe, kuna walauzi wengine na walauzi wanaongezwa kwa ECMAScript, kama vile script hosti ya Windows (Windows Scripting Host, WSH), ActionScript ya Macromedia kwenye Flash na Director MX, na ScriptEase ya Nombas.

1. Version ya ECMAScript

ECMAScript inajumuishwa kwa walauzi mbalimbali, inaandikwa kwa standardi ya kwanza ya ECMA-262. Kama walauzi wengine, ECMA-262 inahitaji kuhaririwa na kuhusiana. Kwa kumekadiri walauzi ya kikubaliane, inapewa walauzi mpya ya standardi. Version ya kipya ya kuu ya ECMA-262 ni 5.1, iliyotangazwa mwezi Juni 2011.

Versiyo ya ECMA-262 ya kwanza ina muhimu kama JavaScript 1.1 ya Netscape, inasifungua kwa sababu ya kumfungua kwa sababu ya kusambaa kwenye browser, na pia ina mawasiliano ndogo. Kwanza, ECMA-262 inahitaji kusimamia kwa Unicode (iliweze kusimamia lugha mbalimbali). Pia, inahitaji kufanya kiwango cha kipengele kinavyotumika kwa mazingira yote (JavaScript 1.1 ya Netscape kinasababisha kwa sababu ya kina kwa mazingira mengine, kama vile kipengele cha Date, kinadependi kwa mazingira). Hii inaeneza sababu kwa sababu ya kama JavaScript 1.1 na 1.2 hayafikii kwa nia ya maelezo ya ECMA-262 ya kwanza.

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 中定义的“程序和正则表达式语法”(意思是可以替换或者扩展内建的正则表达式支持)

Wakati wa kutumia ECMAScript, mawasiliano yana hifadhi kwa kuchukua sheria inayohusiana na msingi hii.

3. Umewa wa ECMAScript katika programu ya kusoma Intaneti

Mnamo wa Netscape Navigator 3.0 iliyotolewa katika 1996, inayotumia JavaScript 1.1. Baadaye, sheria ya JavaScript 1.1 ilikataliwa kama maketi ya msingi ya kina wa EMCA. Kwa sababu ya muhimu wa kuelewa wa JavaScript, Netscape ilianza kuwaandaa 1.2. Kuna matokeo, ECMA haikabidi katika maketi ya Netscape. Kwa kuangalia uchapishaji wa Netscape Navigator 3.0, Microsoft ilianza kuwaandaa IE 3.0, kwa jina la JScript 1.0 (jina lake wa kiislamu cha Microsoft kwa JavaScript), lililotumika kwa kumtaarifu JavaScript 1.1. Kwa sababu ya matumizi ya maudhui na mambo ya kufikia kwa kawaida, JScript 1.0 hakupatikana kama JavaScript 1.1.

在 ECMA-262 第一版定稿之前,发布含有 JavaScript 1.2 的 Netscape Navigator 4.0 是在 1997 年,在那年晚些时候,ECMA-262 标准被接受并标准化。因此,JavaScript 1.2 并不和 ECMAScript 的第一版兼容,虽然 ECMAScript 应该基于 JavaScript 1.1。

JScript 的下一步是 IE 4.0 中加入的 JScript 3.0(2.0 版是随 IIS 3.0 一起发布的,但并未包含在浏览器中)。微软大力宣传 JScript 3.0 是世界上第一个真正符合 ECMA 标准的脚本语言。而那时,ECMA-262 还没有最终定稿,所以 JScript 3.0 也遭受了和 JavaScript 1.2 同样的命运 - 它还是没能符合最终的 ECMAScript 标准。

Netscape 选择在 Netscape Navigator 4.06 中升级它的 JavaScript 实现。JavaScript 1.3 使 Netscape 终于完全符合了 ECMAScript 第一版。Netscape 加入了对 Unicode 标准的支持,并让所有的对象保留了在 JavaScript 1.2 中引入的新特性的同时实现了平台独立。

当 Netscape 将它的源代码作为 Mozilla 项目公布于众时,本来计划 JavaScript 1.4 将会嵌入到 Netscape Navigator 5.0 中。然而,一个冒进的决定 - 要完全从头重新设计 Netscape 的代码,破坏了这个工作。JavaScript 1.4 仅仅作为一个 Netscape Enterprise Server 的服务器端脚本语言发布,以后也没有被放入浏览器中。

如今,所有主流的 Web 浏览器都遵守 ECMA-262 第三版。

下面的表格列出了大部分流行的 Web 浏览器中的 ECMAScript 支持:

Mfumo wa kusoma Muungano wa 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 绘制成一个节点层次图:

Chakula cha DOM kwa ukubwa

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. Viungo vya DOM vingi

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 引入了几种 DOM 新模块,用于处理新的接口类型:

  • DOM 视图 - 描述跟踪文档的各种视图(即 CSS 样式化之前和 CSS 样式化之后的文档)
  • DOM 事件 - 描述事件的接口
  • DOM 样式 - 描述处理基于 CSS 样式的接口
  • DOM 遍历和范围 - 描述遍历和操作文档树的接口

DOM Level 3 inaingiza uwanja wa kumtaarifu na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaambia na kuwaamp

Kwenye uenezi DOM, inaweza kumtumika DOM Level 0. Tumia mazoezi, hakuna standara ya DOM Level 0, bali inaingia kama kiwango cha historia cha DOM (DOM Level 0 inaonyesha DHTML ya asili inayosimamia IE 4.0 na Netscape Navigator 4.0).

3. DOM zingine

Ina yaliyopata DOM Core na DOM HTML, kuna wengine wengi wa lugha wana kutoa standara ya DOM zao. Ziozingatia, lugha zote zinaeneza uwanja na kifaa kizito cha kila DOM:

  • Lugha ya uainishaji wa vifaa vya uharibifu (SVG) 1.0
  • Lugha ya uharibifu wa uainishaji (MathML) 1.0
  • Lugha ya kusimamia ya uharibifu wa habari (SMIL)

Msaada:Kama unataka kuelewa zaidi, tafuta CodeW3C ya Kufundisha SMIL na Kufundisha SVG.

Inaingia, lugha nyingine zilikuwa na mifungo ya DOM yao, kama lugha ya uwanja wa XML wa Mozilla (XUL). Kuna lugha zilizopendeza na W3C zingine sana.

4. Kusimamia DOM kwa kifungu cha kusoma

DOM ilikuwa msingi kabla ya kuanzishwa kwa kusimamia kwa kifungu cha kusoma cha Web. IE ilianza kufikia DOM kwa sababu ya 5.0 barabara, lakini ilikuwa na kusimamia wa kawaida kwa DOM kwa sababu ya 5.5 barabara, IE 5.5 ilifanya DOM Level 1. Kuanzia wakati huo, IE haukuwa na mifungo ya DOM mpya.

Netscape ilianza kusimamia DOM kwa sababu ya Netscape 6 (Mozilla 0.6.0). Hivi karibuni, Mozilla ina kusimamia DOM zaidi, inafanya Level 1 kwa kawaida zote, Level 2 kama kimoja na kama kimoja ya Level 3. (Matokeo ya kazi ya kikundi cha Mozilla ni kumuea kifungu cha kawaida 100%, na kazi yao inaonekana.)

Opera ilianza kusimamia DOM kwa sababu ya 7.0 barabara, na Safari ikawa na kawaida ya DOM Level 1. Zao zote zinaangalia IE 5.5 kwa uangalifu, na kwa sababu nyingi, zinaenea IE 5.5. Kwa sababu ya kusimamia DOM, mafanikio yote ya mifumo wa kusoma yanaenda mbali na Mozilla. Tafuta tabia ya kusoma ya kawaida kwa tabia ya DOM. Tafuta tabia za kusoma ya kawaida kwa tabia ya DOM.

Mfumo wa kusoma Muungano wa DOM
Netscape Navigator 1.0 - 4.x -
Netscape 6.0+ (Mozilla 0.6.0+) Level 1, Level 2, Level 3 (kama kimoja)
IE 2.0 - 4.x -
IE 5.0 Level 1 (kwa kawaida zaidi)
IE 5.5+ Level 1 (kwa kawaida zote)
Opera 1.0 - 6.0 -
Opera 7.0+ Level 1 (kwa kawaida zote), Level 2 (kama kimoja)
Safari 1.0+/Konqueror ~ 2.0+ Level 1

Msaada:Kamaanisha kwa kufikia tabia ya DOM zaidi, tafuta CodeW3C ya Kufundisha HTML DOM na Kufundisha XML DOM.

BOM

IE 3.0 na Netscape Navigator 3.0 ina kiwango - BOM (Browser Object Model) - kinaweza kutumika kufikiria na kuteja kina la bravuzi. Kwa BOM, mwanachama anaweza kumaliza kina, kubadilisha uharibifu wa kina la statusi na kufanya mambo mengine yana kina wa kina la bravuzi na kina la kina la hatari. Kina hiki ina uadilifu na ina huzuni sana kwamba haukuwa na standardi kina yake, bila kina ya kina ya kina.

BOM inahusisha kina la bravuzi na kina la frame, lakini kina ya kina ya bravuzi inayohusiana na kina ya JavaScript inatolewa kama kina ya BOM. Kina haya ni kama:

  • Kutengeneza kina la bravuzi jingine
  • Kuondoa, kuzifunga kina la bravuzi na kubadilisha ukubwa wa kina
  • Kina wa location inatolea taarifa zilizohusiana na kina wa bravuzi wa Web
  • Kina wa screen inatolea taarifa zilizohusiana na uharibifu wa kina wa mtumiaji
  • Mwongozo wa cookie
  • IE inakua BOM, kinapata kina la ActiveXObject, kinaweza kuitikia kina la ActiveX kwa JavaScript

Kwa sababu hakuwa na standardi ya BOM ya kidhamira, kila bravuzi ina mifano wa BOM yake. Kuna mambo ya uadilifu, kama vile kuna kina wa window na kina wa navigation, lakini kila bravuzi inaweza kubadilisha mambo ya kina yake na mambo mengine kwa sababu ya kina haya au mambo mengine.

Angalia: