1.1 JavaScript簡史 在web日益流行的今天,人們對客戶端腳本語言的需求也越來越高。 1995.2 就職於網景公司的Brendan Eich發佈了其開發的LiveScript,改語言同時在瀏覽器和伺服器使用。為了趕工期,在Netscape Navigator 2發佈前夕,Netscape ...
1.1 JavaScript簡史
在web日益流行的今天,人們對客戶端腳本語言的需求也越來越高。
1995.2 就職於網景公司的Brendan Eich發佈了其開發的LiveScript,改語言同時在瀏覽器和伺服器使用。為了趕工期,在Netscape Navigator 2發佈前夕,Netscape為了搭上媒體熱炒Java的順風車,臨時把LiveScript改成了JavaScript.
發佈大獲成功,之後,微軟就在其Internet Explore 3.0中加入名為JScript的JavaScript實現。
當時缺少標準的狀況下,導致了個廠商對於實現javascript特性的差異性,並影響了web發展的道路曲折了十幾年,事實證明對於世界性開發語言最終還是要有統一的標準,閉門造車是要付出沉痛代價——時間成本。
1997年,以javascript 1.1 為藍本的建議被提交給了歐洲電腦製造商會(European Computer Manufactures Association, 簡稱 ECMA),經過幾個月的努力完成了 ECMA-262——定義了一種名為ECMAScript的新的腳本標準。
1.2 JavaScript 實現
一個完整的JavaScript事先應該有下列三個部分組成:
- 核心 [ECMAScript]
- 文檔對象模型 [DOM]
- 瀏覽器對象模型[BOM]
1.2.1 ECMAScript
由 ECMAScript-262定義的ECMAScript與web瀏覽器沒有依賴關係。並沒有包含輸入和輸出定義。它只定義了語言基礎,我們常見的web瀏覽器只是ECMAScript實現可能的宿主環境之一。其他宿主環境包括 Node 和 Adobe Flash。它規定了以下內容:
- 語法
- 類型
- 語句
- 關鍵字
- 保留字
- 操作符
- 對象
1.2.2 文檔對象模型(DOM)
文檔對象模型(DOM)是針對XML,但經過擴展用於HTML的應用程式編程介面。DOM把整個頁面映射為一個多層節點結構。HTML或XML頁面中的每個組成部分都是某種類型的節點。
<html>
<head>
<title>gruguy example</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
1. 為什麼要使用DOM
微軟和網景支持不同的形式的DHTML,過去只編寫一個HTML頁面就能夠在任何瀏覽器中運行的時代結束了。 此時,負責制定web通信標準W3C(world wide website Consortium 萬維網聯盟)開始著手規劃DOM
2. DOM級別
DOM1級(DOM level1)於1998.10成為了W3c的推薦標準。DOM1有兩個模塊組成,DOM核心(Core)和 DOM HTML。DOM核心規定瞭如何映射基於XML的文檔結構,以簡化對文檔中任意部分訪問和操作。DOM HTML模塊規定在核心基礎上加以擴展,添加了針對HTML的對象和方法。
DOM2級引入了新的模塊,定義了新的介面方法
- DOM視圖(DOM View): 定義了跟蹤不同文檔視圖的介面;
- DOM時間(DOM Events):定義了事件和事件處理的介面;
- DOM樣式(DOM Style):定義了基於CSS為元素應用樣式的介面;
- DOM遍歷和範圍(DOM traversal and range):定義了遍歷和操作文檔樹的介面。
DOM3級則進一步擴展了DOM,引入了以統一方式載入和保存文檔的方法——在DOM載入和保存(DOM Load and Save)模塊中定義,新增文檔驗證的方法——DOM驗證(DOM Validation)模塊中定義。DOM3級也對DOM核心擴展,開始支持XML1.0規範,設計XML Infoset、XPath和XMLBase。
3. 其他DOM標準
略
4. Web瀏覽器對DOM的支持
標準制定後,過了一段時間,web瀏覽器才開始支持。微軟首先在IE5中實現了DOM,但直到IE5.5才算是真正支持了DOM1級。Netscape後來重心放在了firefox上,firefox 3完全支持DOM1,幾乎完全支持DOM2,還有一部分DOM3,目前,主流的瀏覽器都支持了DOM標準。
1.2.3 瀏覽器對象模型
BOM始於web瀏覽器的實現,對於操作瀏覽器對象模型,但是沒有標準,直到HTML5,將很多BOM功能寫進正式規範。
- 彈出新瀏覽器視窗的功能
- 移動、縮放和關閉瀏覽器視窗功能
- 提供瀏覽器詳細信息的navigator對象
- 提供瀏覽器所載入頁面的詳細信息的location對象
- 提供用戶顯示器解析度詳細信息screen對象
- 提供cookies的支持
- 像 XMLHTTPRequest 和IE的 ActiveXObject 這樣的自定義對象