【问题标题】:Detect version of JavaScript检测 JavaScript 版本
【发布时间】:2011-09-07 21:28:16
【问题描述】:

如何检测浏览器支持的 JavaScript 版本(如果有)?我想检查 ECMAScript 3、ECMAScript 5 和 ECMAScript 6。

注意:我想避免使用已弃用的language 标签。

【问题讨论】:

  • 您真的需要检查版本或检查功能就足够了吗? (if (typeof new Array().forEach === "function") alert("we have forEach"))
  • 我强烈推荐功能检测而不是版本检测。随着时间的推移,它更容易维护,通常它更准确地测试你真正关心的东西。请记住,给定的 ECMAScript 5 实现不是全部或全部。许多浏览器都会有一些新版本的元素,但不是全部。
  • 您可能还会发现这很有用kangax.github.io/compat-table/es5
  • 关于 ES6 模块的相关问题,在 HTMLScriptElement.prototype 中使用“'noModule' 作为特征检测解决方案:stackoverflow.com/questions/27922232/…

标签: javascript


【解决方案1】:

这里有一个很好的参考:http://www.docsteve.com/DocSteve/Samples/JS/js_version.html

基本上,使用 script 标签的 deprecated language 属性

<script language="javascript">var js_version="1.0"</script>
<script language="javascript1.1">var js_version="1.1"</script>
<script language="javascript1.2">var js_version="1.2"</script>
<script language="javascript1.3">var js_version="1.3"</script>
<script language="javascript1.4">var js_version="1.4"</script>
<script language="javascript1.5">var js_version="1.5"</script>
<script language="javascript1.6">var js_version="1.6"</script>

【讨论】:

【解决方案2】:

http://www.docsteve.com/DocSteve/Samples/JS/js_version.html提出的解决方案是简单的JavaScript函数(使用“createElement”构造):

<script type="text/javascript">
function get_js_version ()
{
    this.jsv = {
            versions: [
                "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2.0"
            ],
            version: ""
        };

    var d = document;

    for (i = 0; i < jsv.versions.length; i++) {
        var g = d.createElement('script'),
            s = d.getElementsByTagName('script')[0];

            g.setAttribute("language", "JavaScript" + jsv.versions[i]);
            g.text = "this.jsv.version='" + jsv.versions[i] + "';";
            s.parentNode.insertBefore(g, s);
    }

    return jsv.version;
}

document.write('JavaScript Version: ' + get_js_version());
</script>

【讨论】:

【解决方案3】:

我想这取决于你想用这些信息做什么,但是很多人更喜欢做特征检测,而不是弄清楚某人正在使用什么浏览器或什么版本的 JS。

查看Modernizr,这是一个很棒的库,可以为您进行特征检测。

【讨论】:

  • 好的,那么 fromCodePoint() 和 fromCharCode() 函数未定义是什么意思?根据下面提到的get_js_version函数,我运行的是1.5。我以为这些功能在 1.5...
  • Firefox 63.0 似乎缺少这些功能。我已提交错误报告。
【解决方案4】:

这会弹出一个警告框,其中包含您的浏览器正在使用的 javascript 版本:

<script type="text/javascript">
  var jsver = 1.0;
</script>
<script language="Javascript1.1">
  jsver = 1.1;
</script>
<script language="Javascript1.2">
  jsver = 1.2;
</script>
<script language="Javascript1.3">
  jsver = 1.3;
</script>
<script language="Javascript1.4">
  jsver = 1.4;
</script>
<script language="Javascript1.5">
  jsver = 1.5;
</script>
<script language="Javascript1.6">
  jsver = 1.6;
</script>
<script language="Javascript1.7">
  jsver = 1.7;
</script>
<script language="Javascript1.8">
  jsver = 1.8;
</script>
<script language="Javascript1.9">
  jsver = 1.9;
</script>


<script type="text/javascript">
  alert(jsver);
</script>

Related jsfiddle.net

【讨论】:

  • 虽然这在理论上可以回答问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
  • 感谢 James 让我注意到这个元问题,我以后会注意的。
  • 谢谢,非常有用,因为我们不需要复制任何东西!
猜你喜欢
  • 1970-01-01
  • 2016-03-21
  • 2010-10-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
相关资源
最近更新 更多