有没有可靠的方法来找出我的浏览器支持的ECMA-262的哪个版本?

时间:2009-11-13 23:39:16

标签: javascript

如何判断我的浏览器是否支持Javascript 1.5?当然使用javascript。 (或者我应该用谷歌搜索还是bin更多?)

5 个答案:

答案 0 :(得分:3)

它通常不值得尝试。

如果您想使用特定功能,请查询是否支持该功能。

即便如此,也无法保证该功能正确实施! ; - )

例证...... IE支持document.getElementById(id);但是除非你在IE8标准模式下使用IE8,否则它会返回许多错误结果中的一个。

答案 1 :(得分:3)

对于官方“JavaScript”,即Mozilla的ECMA-262实现,您可以使用type属性来检测版本:

<script type="text/javascript;version=1.5"> v= '1.5'; </script>
<script type="text/javascript;version=1.6"> v= '1.6'; </script>
<script type="text/javascript;version=1.7"> v= '1.7'; </script>
   ...

这也适用于Opera,(最新版本声称支持JavaScript 1.5)。 IE和Webkit不会在其类型中使用版本参数执行任何脚本。

这类似于老派language属性:

<script language="javascript1.5"> v= '1.5'; </script>
   ...

这通常被认为是过时的,但它确实可以在更多浏览器中使用。最近的Webkit浏览器声称支持1.7,并且所有IE声称仅支持1.3。

IE对JScript有its own versioning scheme,你可以通过条件评论来嗅探它:

<script type="text/javascript">
    /*@cc_on @if (@_jscript_version>=5.5)
        v= '5.5';
    @end @*/
</script>

您无法找到的其他浏览器。至于ECMA-262版本,所有现代浏览器都支持第三版的基线(是的,好的,存在细微的差异和彻头彻尾的错误,特别是在IE中,但仍然如此)。没有浏览器支持大量的第五版,尽管这将会到来。 (没有第四版。)

这些都不是很有用。正如您所看到的,版本号都非常简洁,并没有真正反映出浏览器的支持非常好。你通常更善于嗅探能力。例如,如果您需要ECMA-262-5的JSON功能,请查看是否存在window.JSON。如果您想要功能绑定,请查看您的功能是否存在.bind。您通常可以检测到缺少此类功能并在本机JavaScript后备补丁中检测它们何时不可用。

然而,JavaScript的语法特征无法被嗅探。在JavaScript代码块中包含类似getter / setter定义的内容会立即在IE中出现语法错误,然后才能嗅探它们的可用性。但是这通常不是太大的问题,因为在实践中你无论如何都不能使用这些新功能。

答案 2 :(得分:1)

你可以采用另一种方式,你可以在里面试试阻止它的一些语法。例如:

try{
  "use strict";
  let x=1;//if it's works, then you have some supprot
  console.info("Good news, ecma6 works ");
}catch(e){
  console.warn("Sorry, but ecma6 still doesn't supported");
}

答案 3 :(得分:0)

您可以指定哪个版本的Javascript应该像这样评估代码块:

 <script language="javascript1.5">
 //this code gets run
 </script>

更多信息here

答案 4 :(得分:0)

有些脚本会生成一个包含Javascript版本的浮点数。这是一个很好的Javascript检测:https://developer.mozilla.org/En/Browser_Detection_and_Cross_Browser_Support

以下是这样的脚本:http://www.docsteve.com/DocSteve/Samples/JS/js_version.html