2010-10-14 123 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。