<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Picses' sky

    Picses' sky
    posts - 43, comments - 29, trackbacks - 0, articles - 24

    從本章中你可以了解到 JavaScript 是如何以及為何出現(xiàn)的,從它簡陋的開始到如今涵蓋各種特性的實現(xiàn)。為了能充分發(fā)揮 JavaScript 全部的潛力,了解它的本質(zhì)、歷史及局限性是十分重要的。確切地說,本章著重講解:

    q? JavaScript 和客戶端腳本編程的起源;

    q? JavaScript 語言的不同部分;

    q? JavaScript 相關(guān)的標(biāo)準(zhǔn);

    q? 主流 Web 瀏覽器中的 JavaScript 支持。

    當(dāng)JavaScript 1995 年首次出現(xiàn)時,它的主要目的還只是處理一些輸入的有效性驗證,而在此之前這個工作是留給諸如 Perl 之類的服務(wù)器端語言來完成的。之前,要確定一個特定的字段是否空缺或者輸入的值是否無效,必須與服務(wù)器進行往返的交互。 Netscape Navigator 通過引入 JavaScript 來試圖改變這種情況。這種直接在客戶端處理一些基本的有效性驗證的能力,在剛普及使用電話線調(diào)制解調(diào)器( 28.8kbit/s 的速率)的時代,可是一個令人振奮的新特性。但以如此慢的速度與服務(wù)器往返交互,對耐性是一種考驗。

    從那以后, JavaScript 便成長為市面上每一個主要 Web 瀏覽器都具備的重要特性。同時 JavaScript 不僅僅局限于簡單的數(shù)據(jù)有效性驗證,現(xiàn)在幾乎可以與瀏覽器窗口及其內(nèi)容的每一個方面進行交互。微軟公司在早期版本的瀏覽器中僅支持自己的客戶端腳本語言—— VBScript ,但最后也不得不加入了自己的 JavaScript 實現(xiàn)。

    從本章中你可以了解到 JavaScript 是如何以及為何出現(xiàn)的,從它簡陋的開始到如今涵蓋各種特性的實現(xiàn)。為了能充分發(fā)揮 JavaScript 全部的潛力,了解它的本質(zhì)、歷史及局限性是十分重要的。確切地說,本章著重講解:

    q? JavaScript 和客戶端腳本編程的起源;

    q? JavaScript 語言的不同部分;

    q? JavaScript 相關(guān)的標(biāo)準(zhǔn);

    q? 主流 Web 瀏覽器中的 JavaScript 支持。

    1.1? 歷史簡述

    大概在 1992 年,一家稱作 Nombas 的公司開始開發(fā)一種叫做 C 減減( C-minus-minus ,簡稱 Cmm )的嵌入式腳本語言。 Cmm 背后的理念很簡單:一個足夠強大可以替代宏操作( macro )的腳本語言,同時保持與 C (和 C++ )足夠的相似性,以便開發(fā)人員能很快學(xué)會。這個腳本語言捆綁在一個叫做 CEnvi 的共享軟件產(chǎn)品中,它首次向開發(fā)人員展示了這種語言的威力。 Nombas 最終把 Cmm 的名字改成了 ScriptEase ,原因是后面的部分( mm )聽起來過于“消極”,同時字母 C “令人害怕”( http://www.nombas.com/us/scripting/history.htm )。現(xiàn)在 ScriptEase 已經(jīng)成為了 Nombas 產(chǎn)品背后的主要驅(qū)動力。當(dāng) Netscape Navigator 嶄露頭角時, Nombas 開發(fā)了一個可以嵌入網(wǎng)頁中的 CEnvi 的版本。這些早期的試驗稱為 Espresso Page (濃咖啡般的頁面),它們代表了第一個在萬維網(wǎng)上使用的客戶端腳本語言。而 Nombas 絲毫沒有料到它的理念將會成為因特網(wǎng)的一塊重要基石。

    當(dāng)網(wǎng)上沖浪越來越流行時,對于開發(fā)客戶端腳本的需求也逐漸增大。此時,大部分因特網(wǎng)用戶還僅僅通過 28.8kbit/s 的調(diào)制解調(diào)器來連接到網(wǎng)絡(luò),即便這時網(wǎng)頁已經(jīng)不斷地變得更大和更復(fù)雜。而更加加劇用戶痛苦的是,僅僅為了簡單的表單有效性驗證,就要與服務(wù)器端進行多次的往返交互。設(shè)想一下,用戶填完一個表單,點擊提交按鈕,等待了 30 秒鐘的處理后,看到的卻是一條告訴你忘記填寫一個必要的字段。那時正處于技術(shù)革新最前沿的 Netscape ,開始認真考慮一種開發(fā)客戶端腳本語言來解決簡單的處理問題。

    當(dāng)時工作于 Netscape Brendan Eich ,開始著手為即將在 1995 年發(fā)行的 Netscape Navigator 2.0 開發(fā)一個稱之為 LiveScript 的腳本語言,當(dāng)時的目的是同時在瀏覽器和服務(wù)器(本來要叫它 LiveWire 的)端使用它。 Netscape Sun 公司聯(lián)手及時完成 LiveScript 實現(xiàn)。就在 Netscape Navigator 2.0 即將正式發(fā)布前, Netscape 將其更名為 JavaScript ,目的是為了利用 Java 這個因特網(wǎng)時髦詞匯。 Netspace 的賭注最終得到回報, JavaScript 從此變成了因特網(wǎng)的必備組件。

    因為 JavaScript 1.0 如此成功, Netscape Netscape Navigator 3.0 中發(fā)布了 1.1 版。恰巧那個時候,微軟決定進軍瀏覽器,發(fā)布了 IE 3.0 并搭載了一個 JavaScript 的克隆版,叫做 JScript (這樣命名是為了避免與 Netscape 潛在的許可糾紛)。微軟步入 Web 瀏覽器領(lǐng)域的這重要一步雖然令其聲名狼藉,但也成為 JavaScript 語言發(fā)展過程中的重要一步。

    在微軟進入后,有 3 種不同的 JavaScript 版本同時存在: Netscape Navigator 3.0 中的 Java- Script IE 中的 JScript 以及 CEnvi 中的 ScriptEase 。與 C 和其他編程語言不同的是, JavaScript 并沒有一個標(biāo)準(zhǔn)來統(tǒng)一其語法或特性,而這 3 種不同的版本恰恰突出了這個問題。隨著業(yè)界擔(dān)心的增加,這個語言標(biāo)準(zhǔn)化顯然已經(jīng)勢在必行。

    1997 年, JavaScript 1.1 作為一個 草案提交 給歐洲計算機制造商協(xié)會( ECMA )。第 39 技術(shù)委員會( TC39 )被委派來“標(biāo)準(zhǔn)化一個通用、跨平臺、中立于廠商的腳本語言的語法和語義”( http://www.ecma-international.org/memento/TC39.htm )。由來自 Netscape Sun 、微軟、 Borland 和其他一些對腳本編程感興趣的公司的程序員組成的 TC39 錘煉出了 ECMA-262 ,該標(biāo)準(zhǔn)定義了叫做 ECMAScript 的全新腳本語言。

    在接下來的幾年里,國際標(biāo)準(zhǔn)化組織及國際電工委員會( ISO/IEC )也采納 ECMAScript 作為標(biāo)準(zhǔn)( ISO/IEC-16262 )。從此, Web 瀏覽器就開始努力(雖然有著不同程度的成功和失敗)將 ECMAScript 作為 JavaScript 實現(xiàn)的基礎(chǔ)。

    盡管 ECMAScript 是一個重要的標(biāo)準(zhǔn),但它并不是 JavaScript 唯一的部分,當(dāng)然,也不是唯一被標(biāo)準(zhǔn)化的部分。實際上,一個完整的 JavaScript 實現(xiàn)是由以下 3 個不同部分組成的(見圖 1-1 ):

    q? 核心( ECMAScript );

    q? 文檔對象模型( DOM );

    q? 瀏覽器對象模型( BOM )。

    ? 1-1

    1.2.1 ? ECMAScript

    ECMAScript 并不與任何具體瀏覽器相綁定,實際上,它也沒有提到用于任何用戶輸入輸出的方法(這點與 C 這類語言不同,它需要依賴外部的庫來完成這類任務(wù))。那么什么才是 ECMAScript 呢? ECMA-262 標(biāo)準(zhǔn)(第 2 段)的描述如下:

    ECMAScript 可以為不同種類的宿主環(huán)境提供核心的腳本編程能力,因此核心的腳本語言是與任何特定的宿主環(huán)境分開進行規(guī)定的……”

    Web 瀏覽器對于 ECMAScript 來說是一個宿主環(huán)境,但它并不是唯一的宿主環(huán)境。事實上,還有不計其數(shù)的其他各種環(huán)境(例如 Nombas ScriptEase Macromedia 同時用在 Flash Director MX 中的 ActionScript )可以容納 ECMAScript 實現(xiàn)。那么 ECMAScript 在瀏覽器之外規(guī)定了些什么呢?簡單地說, ECMAScript 描述了以下內(nèi)容:

    q? 語法;

    q? 類型;

    q? 語句;

    q? 關(guān)鍵字;

    q? 保留字;

    q? 運算符;

    q? 對象。

    ECMAScript 僅僅是一個描述,定義了腳本語言的所有屬性、方法和對象。其他的語言可以實現(xiàn) ECMAScript 來作為功能的基準(zhǔn), JavaScript 就是這樣(見圖 1-2 )。

    ? 1-2

    每個瀏覽器都有它自己的 ECMAScript 接口的實現(xiàn),然后這個實現(xiàn)又被擴展,包含了 DOM BOM (在以下幾節(jié)中再討論)。當(dāng)然還有其他實現(xiàn)并擴展了 ECMAScript 的語言,例如 Windows 腳本宿主( Windows Scripting Host WSH )、 Macromedia Flash Director MX 中的 ActionScript ,以及 Nombas ScriptEase

    1 ECMAScript 的版本

    ECMAScript 分成幾個不同的版本,它是在一個叫做 ECMA-262 的標(biāo)準(zhǔn)中定義的。和其他標(biāo)準(zhǔn)一樣, ECMA-262 會被編輯和更新。當(dāng)有了主要更新時,就會發(fā)布一個標(biāo)準(zhǔn)的新版。最新 ECMA-262 的版本是第三版,于 1999 12 月發(fā)布。 ECMA-262 的第一個版在根本上是和 Netscape JavaScript 1.1 一樣的,只是把所有與瀏覽器相關(guān)的代碼刪除了,不過有一些小的調(diào)整。首先, ECMA-262 要求對 Unicode 標(biāo)準(zhǔn)的支持(以便支持多語言)。第二,它要求對象是平臺無關(guān)的( Netscape JavaScript 1.1 事實上有不同的對象實現(xiàn),例如 Date 對象,是依賴于平臺的)。這也是 JavaScript 1.1 1.2 為什么不符合 ECMA-262 規(guī)范第一版的主要原因。

    ECMA-262 的第二版大部分更新本質(zhì)上是編輯性的。這次標(biāo)準(zhǔn)的更新是為了與 ISO/IEC- 16262 的嚴格一致,也并沒有特別添加、更改和刪除內(nèi)容。 ECMAScript 實現(xiàn)一般不會遵守第二版。

    EMCA-262 第三版是該標(biāo)準(zhǔn)第一次真正的更新。它提供了對字符串處理、錯誤定義和數(shù)值輸出的更新。同時,它還增加了正則表達式、新的控制語句、 try...catch 異常處理的支持,以及一些為使標(biāo)準(zhǔn)國際化而做的小改動。一般來說,它標(biāo)志著 ECMAScript 成為一種真正的編程語言的到來。

    2 .何謂 ECMAScript 符合性

    ECMA-262 中, ECMAScript 符合性( conformance )有明確的定義。一個腳本語言必須滿足以下四項基本原則:

    q? 符合的實現(xiàn)必須按照 ECMA-262 中所描述的支持所有的“類型、值、對象、屬性、函數(shù)和程序語法及語義”( ECMA-262 ,第 1 頁);

    q? 符合的實現(xiàn)必須支持 Unicode 字符標(biāo)準(zhǔn)( UCS );

    q? 符合的實現(xiàn)可以增加沒有在 ECMA-262 中指定的“額外的類型、值、對象、屬性和函數(shù)”。 ECMA-262 將這些增加描述為規(guī)范中未給定的新對象或?qū)ο蟮男聦傩裕?/span>

    q? 符合的實現(xiàn)可以支持沒有在 ECMA-262 中定義的“程序和正則表達式語法”(意思是可以替換或者擴展內(nèi)建的正則表達式支持)。

    所有的 ECMAScript 實現(xiàn)必須符合以上標(biāo)準(zhǔn)。

    3 Web 瀏覽器中的 ECMAScript 支持

    含有 JavaScript 1.1 Netscape Navigator 3.0 1996 年發(fā)布。然后, JavaScript 1.1 規(guī)范被作為一個新標(biāo)準(zhǔn)的草案提交給 ECMA 。有了 JavaScript 轟動性的流行, Netscape 十分高興地開始開發(fā) 1.2 版。但有一個問題: ECMA 并未接受 Netscape 的草案。在 Netscape Navigator 3.0 發(fā)布后不久,微軟就發(fā)布了 IE 3.0 。該版本的 IE 含有 JScript 1.0 (微軟自己的 JavaScript 實現(xiàn)的名稱),原本計劃可以與 JavaScript 1.1 相提并論。然而,由于文檔不全以及一些不當(dāng)?shù)闹貜?fù)特性, JScript 1.0 遠遠沒有達到 JavaScript 1.1 的水平。

    ECMA-262 第一版定稿之前,發(fā)布含有 JavaScript 1.2 Netscape Navigator 4.0 是在 1997 年,在那年晚些時候, ECMA-262 標(biāo)準(zhǔn)被接受并標(biāo)準(zhǔn)化。因此, JavaScript 1.2 并不和 ECMAScript 的第一版兼容,雖然 ECMAScript 應(yīng)該基于 JavaScript 1.1

    JScript 的下一步升級是 IE 4.0 中加入的 JScript 3.0 2.0 版是隨微軟的 IIS 3.0 一起發(fā)布的,但并未包含在瀏覽器中)微軟大力宣傳 JScript 3.0 是世界上第一個真正符合 ECMA 標(biāo)準(zhǔn)的腳本語言。而那時, ECMA-262 還并沒有最終定稿,所以 JScript 3.0 也遭受了和 JavaScript 1.2 同樣的命運——它還是沒能符合最終的 ECMAScript 標(biāo)準(zhǔn)。

    Netscape 選擇在 Netscape Navigator 4.06 中升級它的 JavaScript 實現(xiàn)。 JavaScript 1.3 使 Netscape 終于完全符合了 ECMAScript 第一版。 Netscape 加入了對 Unicode 標(biāo)準(zhǔn)的支持,并讓所有的對象保留了在 JavaScript 1.2 中引入的新特性的同時實現(xiàn)了平臺獨立。

    當(dāng) Netscape 將它的源代碼作為 Mozilla 項目公布于眾時,本來計劃 JavaScript 1.4 將會嵌入到 Netscape Navigator 5.0 中。然而,一個冒進的決定——要完全從頭重新設(shè)計 Netscape 的代碼, 破壞了這個工作。 JavaScript 1.4 僅僅作為一個 Netscape Enterprise Server 的服務(wù)器端腳本語言發(fā)布,以后也沒有被放入瀏覽器中。

    如今,所有的主流 Web 瀏覽器都遵守 ECMA-262 第三版。下面的表格列出了大部分流行 Web 瀏覽器中的 ECMAScript 支持:

    ?????????? ? ?

    ECMAScript 符合性

    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

    1.2.2? DOM

    DOM (文檔對象模型)是 HTML XML 的應(yīng)用程序接口( API )。 DOM 將把整個頁面規(guī)劃成由節(jié)點層級構(gòu)成的文檔。 HTML XML 頁面的每個部分都是一個節(jié)點的衍生物。請考慮下面的 HTML 頁面:

    這段代碼可以用 DOM 繪制成一個節(jié)點層次圖(如圖 1-3 所示)。

    ? 1-3

    DOM 通過創(chuàng)建樹來表示文檔,從而使開發(fā)者對文檔的內(nèi)容和結(jié)構(gòu)具有空前的控制力。用 DOM API 可以輕松地刪除、添加和替換節(jié)點。

    1 .為什么 DOM 必不可少

    自從 IE 4.0 Netscape Navigator 4.0 開始支持不同形式的動態(tài) HTML DHTML ),開發(fā)者首次能夠在不重載網(wǎng)頁的情況下修改它的外觀和內(nèi)容。這是 Web 技術(shù)的一大飛躍,不過也帶來了巨大的問題。 Netscape 和微軟各自開發(fā)自己的 DHTML ,從而結(jié)束了 Web 開發(fā)者只編寫一個 HTML 頁面就可以在所有瀏覽器中訪問的時期。

    業(yè)界決定必須要做點什么以保持 Web 的跨平臺特性,他們擔(dān)心如果放任 Netscape 和微軟公司這樣做, Web 必將分化為兩個獨立的部分,每一部分只適用于特定的瀏覽器。因此,負責(zé)制定 Web 通信標(biāo)準(zhǔn)的團體 W3C World Wide Web Consortium )就開始制定 DOM

    2 DOM 的各個 Level

    DOM Level 1 W3C 1998 10 月提出的。它由兩個模塊構(gòu)成,即 DOM Core DOM HTML 。前者提供了基于 XML 的文檔的結(jié)構(gòu)圖,以方便訪問和操作文檔的任意部分;后者添加了一些 HTML 專用的對象和方法,從而擴展了 DOM Core

    注意,DOM 不是JavaScript 專有的,事實上許多其他語言都實現(xiàn)了它。不過,Web 瀏覽器中的DOM 已經(jīng)用ECMAScript 實現(xiàn)了,現(xiàn)在是JavaScript 語言的一個很大組成部分。

    DOM Level 1 只有一個目標(biāo),即規(guī)劃文檔的結(jié)構(gòu), DOM Level 2 的目標(biāo)就廣泛多了。對原始 DOM 的擴展添加了對鼠標(biāo)和用戶界面事件 (DHTML 對此有豐富的支持 ) 、范圍、遍歷(重復(fù)執(zhí)行 DOM 文檔的方法)的支持,并通過對象接口添加了對 CSS (層疊樣式表)的支持。由 Level 1 引入的原始 DOM Core 也加入了對 XML 命名空間的支持。

    DOM Level 2 引入幾種 DOM 新模塊,用于處理新的接口類型:

    q? DOM 視圖——描述跟蹤文檔的各種視圖(即 CSS 樣式化之前和 CSS 樣式化之后的文檔)的接口;

    q? DOM 事件——描述事件的接口;

    q? DOM 樣式——描述處理基于 CSS 樣式的接口;

    q? DOM 遍歷和范圍——描述遍歷和操作文檔樹的接口。

    DOM Level 3 引入了以統(tǒng)一的方式載入和保存文檔的方法(包含在新模塊 DOM Load and Save 中)以及驗證文檔( DOM Validation )的方法,從而進一步擴展了 DOM 。在 Level 3 中, DOM Core 被擴展為支持所有的 XML 1.0 特性,包括 XML Infoset XPath XML Base

    在學(xué)習(xí) DOM 可能會遇到有人引用 DOM Level 0 。注意 根本沒有 DOM Level 0 這個標(biāo)準(zhǔn) 它只是 DOM 的一個歷史參考點 DOM Level 0 指的是 IE 4.0 Netscape Navigator 4.0 中支持的原始 DHTML

    3 .其他 DOM

    除了 DOM Core DOM HTML 外,還有其他幾種語言發(fā)布了自己的 DOM 標(biāo)準(zhǔn)。這些語言都是基于 XML 的,每種 DOM 都給對應(yīng)語言添加了特有的方法和接口:

    q? 可縮放矢量圖形( SVG 1.0

    q? 數(shù)學(xué)標(biāo)記語言( MathML 1.0

    q? 同步多媒體集成語言( SMIL )。

    此外,其他語言也開發(fā)了自己的 DOM 實現(xiàn),如 Mozilla XML 用戶界面語言( XUL )。不過,只有上面列出的幾種語言是 W3C 的推薦標(biāo)準(zhǔn)。

    4 Web 瀏覽器中的 DOM 支持

    DOM 在被 Web 瀏覽器開始實現(xiàn)之前就已經(jīng)是一種標(biāo)準(zhǔn)了。 IE 首次嘗試支持 DOM 是在 5.0 版本中,不過其實直到 5.5 版本才具有真正的 DOM 支持, IE 5.5 實現(xiàn)了 DOM Level 1 。從那時起, IE 就沒有再引入新的 DOM 功能。

    Netscape 直到 Netscape 6 Mozilla 0.6.0 )才引入 DOM 支持。目前, Mozilla 具有最好的 DOM 支持,實現(xiàn)了完整的 Level 1 、幾乎所有的 Level 2 以及一部分 Level 3 。( Mozilla 開發(fā)小組的目標(biāo)是構(gòu)造一個與標(biāo)準(zhǔn) 100 %兼容的瀏覽器,他們的工作得到了回報。)

    Opera 直到 7.0 版本才加入 DOM 支持,還有 Safari 也實現(xiàn)了大部分 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

    1.2.3 ? BOM

    IE 3.0 Netscape Navigator 3.0 提供了一種特性—— BOM 瀏覽器對象模型),可以對瀏覽器窗口進行訪問和操作。使用 BOM ,開發(fā)者可以移動窗口、改變狀態(tài)欄中的文本以及執(zhí)行其他與頁面內(nèi)容不直接相關(guān)的動作。使 BOM 獨樹一幟且又常常令人懷疑的地方在于,它只是 JavaScript 實現(xiàn)的一部分,沒有任何相關(guān)的標(biāo)準(zhǔn)。

    BOM 主要處理瀏覽器窗口和框架,不過通常瀏覽器特定的 JavaScript 擴展都被看作 BOM 的一部分。這些擴展包括:

    q? 彈出新的瀏覽器窗口;

    q? 移動、關(guān)閉瀏覽器窗口以及調(diào)整窗口大小;

    q? 提供 Web 瀏覽器詳細信息的導(dǎo)航對象;

    q? 提供裝載到瀏覽器中頁面的詳細信息的定位對象;

    q? 提供用戶屏幕分辨率詳細信息的屏幕對象;

    q? cookie 的支持;

    q? IE 擴展了 BOM ,加入了 ActiveXObject 類,可以通過 JavaScript 實例化 ActiveX 對象。

    由于沒有相關(guān)的 BOM 標(biāo)準(zhǔn),每種瀏覽器都有自己的 BOM 實現(xiàn)。有一些事實上的標(biāo)準(zhǔn),如具有一個窗口對象和一個導(dǎo)航對象,不過每種瀏覽器可以為這些對象或其他對象定義自己的屬性和方法。本書第 5 章詳細介紹了這些實現(xiàn)的不同之處。

    1.3? 小結(jié)

    本章介紹了 JavaScript 這種客戶端 Web 瀏覽器腳本語言。你已經(jīng)了解了構(gòu)成 JavaScript 完整實現(xiàn)的各個部分:

    q? JavaScript 的核心 ECMAScript 描述了該語言的語法和基本對象;

    q? DOM 描述了處理網(wǎng)頁內(nèi)容的方法和接口;

    q? BOM 描述了與瀏覽器進行交互的方法和接口。

    此外,本章還探討了 JavaScript 的歷史,使你了解到該語言的各個部分是如何發(fā)展而來的,以及歷史上瀏覽器是如何處理各種標(biāo)準(zhǔn)的實現(xiàn)的。


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费一级毛片不卡在线播放| 国产亚洲精品第一综合| 国产精品亚洲产品一区二区三区 | 蜜桃AV无码免费看永久| 污污污视频在线免费观看| 亚洲人成网站色在线观看| 亚洲AV中文无码字幕色三| 亚洲国产成人精品女人久久久 | 亚洲国产情侣一区二区三区| 亚洲国产成人一区二区三区| 亚洲精品乱码久久久久久蜜桃| 麻豆精品国产免费观看| 免费AA片少妇人AA片直播| 中文字幕天天躁日日躁狠狠躁免费| 黄色短视频免费看| 一区二区三区免费在线视频| 亚洲熟妇无码一区二区三区导航 | 一个人免费视频观看在线www| 免费无码一区二区| 亚洲精品色在线网站| 亚洲熟妇无码一区二区三区导航| 亚洲精品在线免费观看视频| 亚洲国产精品久久久久久| 国产AV无码专区亚洲A∨毛片| 久久久久久A亚洲欧洲AV冫| 亚洲国产综合精品中文字幕| 国产免费人人看大香伊| 全免费A级毛片免费看网站| 女人18毛片a级毛片免费| 成人特黄a级毛片免费视频| 在线看片无码永久免费视频| 欧洲黑大粗无码免费| 无码中文字幕av免费放| 美女视频黄的全免费视频| 亚洲一区免费在线观看| 99久久久国产精品免费无卡顿| 国产高清不卡免费在线| 无码永久免费AV网站| 毛片免费观看网站| 日本特黄特黄刺激大片免费| 免费a级黄色毛片|