2010-10-14 140 views
3

默認情況下,哪個版本的JavaScript會使用瀏覽器?我閱讀了關於Firefox支持的不同版本JavaScript的文檔(https://developer.mozilla.org/en/JavaScript)。有很多有趣和有用的東西。不幸的是,我現在很困惑我現在可以在開發中使用哪個版本。瀏覽器中的默認JavaScript版本

+0

您通常無法控制版本;他們使用他們使用的東西。利用瀏覽器特定功能通常通過稱爲[「功能檢測」的方法完成。](http://www.google.com/search?q=javascript+feature+detection) – Pointy 2010-10-14 17:39:04

回答

4

不幸的是,由於丟失/破壞的實現,知道實際版本並不會對你有太大的幫助。

你有了更好的測試爲你擔心舊的瀏覽器可能不支持的方法等

例如如果支持IE5並希望能夠使用,你可以做類似的的Array.push()方法:

if(typeof(Array.prototype.push) == 'undefined'){ 
    Array.prototype.push = function(item){ 
    var len = this.length; 
    this[len] = item; 
    return this.length; 
    }; 
} 

至於你的實際腳本標記 - 不包括與版本語言屬性 - 它的過時。

<script language="JavaScript1.2">...</script><!-- BAD --> 

<script type="text/javascript">...</script><!-- GOOD --> 

<script>...</script><!-- ALSO GOOD --> 

如果你是玩遊戲的XHTML,因此需要有效的XML輸出,你要如下來包裝你的腳本標籤內容。

<script type="text/javascript"> 
    <![CDATA[ 
    //your code here... 
    ]]> 
</script> 
+0

是不是有些特別的東西需要這樣做才能使用Firefox支持的奇怪的「JavaScript中的XML」功能?我不記得是否在「type」屬性中。 – Pointy 2010-10-14 17:48:41

+0

如果您輸出的是XHTML,那麼是的,您需要使用CDATA轉義腳本標記的內容,以便少於和符號符號不會破壞事物。我會爲此更新一個代碼示例。 – scunliffe 2010-10-14 18:00:22

4

的JavaScript(TM)是ECMAScript標準的實施,由Mozilla公司製成。

他們已經實施了很多非標準的功能,你將只他們實現(SpiderMonkey的,犀牛),你不應該感到困惑與他們的版本發現。

其他瀏覽器有自己的執行標準,例如:

JavaScript 1.5符合ECMAScript 3rd Edition Standard,後續版本JS 1.6,1.7,1.8和1.9引入的語言功能不在該標準版本中,是新的ECMAScript 5th Edition的一部分,以及其他特定功能,通常稱爲Mozilla擴展

2

您幾乎可以使用ECMAScript第3版標準,該標準在所有當前瀏覽器中幾乎完全實現。

該規範是在這裏:http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf

此外,檢查出關於JavaScript實現在網絡瀏覽器這個偉大的維基百科文章:http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(ECMAScript

新版本(ECMAScript的第5版)將在IE9中實現並明年所有的現代瀏覽器,但不是老版本的IE。