天天看點

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

本節書摘來自異步社群《javascript設計與開發新思維》一書中的第1章,第1.6節,作者:【美】larry ullman著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

我們已經說明過,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)所添加的動态功能而已。

繼續閱讀