Javascript簡史
背景
在一個網(wǎng)速巨慢袜漩、網(wǎng)頁大小和復(fù)雜度不斷增加的年代还绘,人們逐漸對如下流程失去耐心:
網(wǎng)頁中輸入數(shù)據(jù)——提交表單——服務(wù)端校驗——(maybe 30s later)網(wǎng)頁提示輸入有誤——修改并重新提交
像這種簡單的校驗操作如果能在前端完成將明顯提升用戶體驗误墓,于是Netscape公司的Brendan Eich開發(fā)了一種名為Javascript的腳本語言,在1995年2月份與Netscape Navigator 2一同發(fā)布。可見Javascript是專門為與網(wǎng)頁交互而設(shè)計的語言驶臊。
1996年8月,微軟的Internet Explorer 3 加入了名為JScript的Javascript實現(xiàn)叼丑。
1997年关翎,以Javascript1.1為藍本的ECMA-262現(xiàn)世,定義了一個名為ECMAScript的新腳本語言標準幢码。
Javascript組成
ECMAScript
ECMAScript是獨立的腳本語言笤休,與Web沒有關(guān)系,事實上症副,Web、Node政基、Adobe Flash在ECMAScript的基礎(chǔ)上進行了擴展贞铣,構(gòu)建了更完善的腳本語言,它們都是ECMAScript的宿主環(huán)境沮明。
那么ECMAScript的語言體系都規(guī)定了什么呢辕坝?
- 語法
- 類型
- 語句
- 關(guān)鍵字
- 保留字
- 操作符
- 對象
版本
第一版就是在javasccript 1.1的基礎(chǔ)上剔除了所有與瀏覽器相關(guān)的代碼(實現(xiàn)與平臺無關(guān)),并做出一些修改(比如支持Unicode標準)
第二版主要是編輯加工荐健,為了保持與ISO/IEC-16262嚴格一致
第三版做了一次真正的修改酱畅,是ECMAScript成為一門真正的編程語言
第四版已被放棄,由于跨越較大
第五版是第四版的替代版ECMAScript 3.1江场,增加了原生JSON對象纺酸、嚴格模式等等
兼容
要想成為ECMAScript的實現(xiàn),需滿足以下條件:
- 支持ECMA-262語言體系規(guī)定的所有內(nèi)容
- 支持Unicode字符標準
可進行一下擴展: - 添加標準中沒有規(guī)定的新對象或?qū)ο蟮男聦傩?/li>
- 支持ECMA-262沒有定義的程序和正則表達式語法
Web瀏覽器對ECMAScript的支持
瀏覽器 | ECMAScript兼容性 |
---|---|
Netscape Navigator 4.06~4.79 IE5 | 第1版 |
Opera 6~7.1 | 第2版 |
Netscape 6+(Mozilla 0.6.0+) IE5.5~IE7 Opera 7.2+ *Safari 1~2.0.x 3.x Chrome 1+ FireFox 1~2 3.0.x | 第3版 |
*IE8 IE9+ *Safari 4.x~5.x *FireFox 3.5~3.6 4.0+ | 第5版 |
*標注的是不完全兼容的實現(xiàn)
DOM
DOM即文檔對象模型
背景
IE和Netscape對DHTML各持己見址否,瀏覽器互不兼容餐蔬,W3C站出來指定規(guī)范,規(guī)劃DOM。
DOM級別
DOM 0級樊诺,DHTML仗考,參照點。
DOM 1級词爬,98年10月成為W3C的推薦標準秃嗜,分為DOM core和DOM HTML,DOM core規(guī)定如何映射基于XML的文檔結(jié)構(gòu)顿膨,DOM HTML在DOM core基礎(chǔ)上擴展锅锨,添加針對HTML的對象和方法。
DOM 2級引入了一些新模塊:
- DOM視圖
- DOM事件
- DOM樣式
- DOM遍歷和范圍
- DOM 3級
在DOM加載和保存模塊中定義統(tǒng)一加載和保存文檔的方法虽惭,在DOM驗證模塊定義驗證文檔的方法橡类。支持XML1.0規(guī)范。
其他DOM標準
- SVG 1.0
- MathML 1.0
- SMIL
瀏覽器對DOM的支持
瀏覽器 | DOM兼容性 |
---|---|
Netscape 6+(Mozilla 0.6.0+) | 1級 2級(almost) 3級(partial) |
IE5 | 1級(at least) |
IE5.5~IE8 | 1級(almost) |
IE 9+ | 1級 2級 3級 |
Opera 7~8.x | 1級(almost) 2級(partial) |
Opera 9~9.9 | 1級 2級(almost) 3級(partial) |
Opera 10+ | 1級 2級 3級(partial) |
Safari 1.0.x | 1級 |
Safari 2+ | 1級 2級(partial) |
Chrome 1+ | 1級 2級(partial) |
FireFox 1+ | 1級 2級(almost) 3級(partial) |
BOM
HTML5之后芽唇,瀏覽器對象模型有了相關(guān)的標準顾画,它包含一下內(nèi)容:
- 處理瀏覽器窗口和框架
- 彈出新瀏覽器窗口的功能
- 移動、縮放和關(guān)閉瀏覽器窗口的功能
- 提供包含瀏覽器詳細信息的navigator對象
- 提供包含瀏覽器所加載頁面詳細信息的location對象
- 提供包含用戶顯示器分辨率詳細信息的screen對象
- 支持cookies
- 自定義對象(比如XMLHttpRequest)