《JavaScript設計與開發新思維》——1.6JavaScript版本和瀏覽器支援

非同步社群發表於2017-05-02

本節書摘來自非同步社群《JavaScript設計與開發新思維》一書中的第1章,第1.6節,作者:【美】Larry Ullman著,更多章節內容可以訪問雲棲社群“非同步社群”公眾號檢視

1.6 JavaScript版本和瀏覽器支援

我們已經說明過,JavaScript的核心來自於ECMAScript,ECMAScript在2009年推出了最新的第5版。JavaScript的當前版本是基於ECMAScript 5的1.8.5版本,於2010年7月推出。但是在JavaScript中程式設計時,版本的問題不如“在什麼瀏覽器中可能發生什麼情況”那麼重要。大部分現代瀏覽器都支援ECMAScript 3和ECMAScript 5的一部分(ECMAScript 的版本4從未正式釋出)。

“現代瀏覽器”是你在本書和其他地方常見的詞語。粗略地說,現代瀏覽器支援核心JavaScript、DOM操縱、XmlHttpRequest物件(用於發出Ajax請求)以及基本的CSS。大體上,現代瀏覽器能夠利用當今大部分動態Web技術。這一寬泛的定義包括大部分版本的Firefox、Chrome、Opera和Safari以及IE 6之後的Internet Explorer版本(IE 6多年來已經成為Web開發人員的死敵)。

注意,“現代瀏覽器”這一寬泛的定義並不只是針對JavaScript所下的,還基於其他先進的功能,例如執行DOM操縱的能力。JavaScript常常用來操縱DOM,但是DOM由W3C管理,不同的瀏覽器也以不同的方式支援DOM,這意味著在建立動態網站時,考慮的因素不僅是JavaScript支援的差異,還有DOM支援和CSS支援的差異。(如果你選擇了HTML5,還有HTML5支援的差異)。

2011年8月1日,Google決定支援更有限的一系列現代瀏覽器(這裡指的是對Web應用的支援,Google搜尋引擎當然可以在任何瀏覽器中使用)。Google的條件很簡單—Chrome、Firefox、IE和Safari的當前版本和前一個版本。一方面,這種方法排除了相當一部分Web使用者和一些在其他場合被當作“現代”的瀏覽器。另一方面,這種方法明確了新版本瀏覽器中的變化,而且,放棄舊的版本也有好的理由—使用者也應該不斷更新他們的瀏覽器。
但是,作為一名JavaScript程式設計師,這些列表對你來說意味著什麼呢?知道不同瀏覽器的不同版本所能做的事情對你有很好的啟發,但是並不是JavaScript程式設計的基礎。10年以前,當時還沒有這麼多種瀏覽器,JavaScript程式碼曾經專門用來檢查瀏覽器型別和版本(見前面的程式碼):是Internet Explorer還是Netscape Navigator?是版本4還是5或者5.5?由於實際上有數千種不同的瀏覽器型別和版本(考慮到移動裝置),不可能以特定的瀏覽器和版本為目標。而且,由於許多不同的原因,瀏覽器可能錯誤地標識自己。即使你能克服這兩個負擔,這些程式碼也將在新瀏覽器的下一次釋出、新瀏覽器版本或者具備內部瀏覽器的新裝置推出時過時。

在現在的現代JavaScript中,程式碼不為瀏覽器而為瀏覽器的“能力”而編寫。這一差別看似細微,實際上卻非常重要,是現代JavaScript程式設計基礎的一部分。在本書中,你將學到許多程式設計技術,這些技術所著眼的是“瀏覽器可能做什麼”,而不是“所執行的是什麼瀏覽器”。同樣,在開發程式碼之後,你仍然應該在一定範圍(比如Yahoo!或者Google的列表中)的瀏覽器上進行測試。記住,一個正確設計的網站在不支援的瀏覽器中仍然應該保持完整的功能,只是不能利用JavaScript和其他現代化工具(例如CSS3和HTML5)所新增的動態功能而已。


相關文章