2011-09-07 7 views
32

ブラウザがサポートしているJavaScriptのバージョンを検出するにはどうすればよいですか?私はECMAScript 3とECMAScript 5とECMAScript 6を確認したい。JavaScriptのバージョンを検出します。

注:廃止予定のlanguageタグを避けたい。ここで

+3

本当にバージョンを確認する必要がありますか、機能が十分であることを確認してください。 (私たちはforEachを持っています) ') –

+3

バージョン検出よりも機能検出を強くお勧めします。時間の経過とともに維持するのがずっと簡単で、通常は気になるものをより正確にテストします。与えられたECMAScript 5の実装はすべてでも何もないわけではないことを覚えておいてください。多くのブラウザには新しいバージョンの要素がいくつかありますが、すべてではありません。 – jfriend00

+0

この便利な情報もありますhttp://kangax.github.io/compat-table/es5/ –

答えて

9

の非推奨の言語属性を使用しますが、誰かがどのブラウザを使用しているのか、どのバージョンのJSを使用しているのかを把握するのではなく、機能検出を行う方が好きです。

Modernizrをチェックしてください。これは、機能の検出を行う素晴らしいライブラリです。

18

はあなたのために良いの参照です:http://www.docsteve.com/DocSteve/Samples/JS/js_version.html

基本的に、私はそれはあなたが情報をどうしたいのかに依存するとしたスクリプトタグ

<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> 
+0

これは、推奨されていない属性 'language'を使用していても、私が提案しようとしているものです。 JSバージョンをECMAScriptバージョンにマップする必要があります。 http://en.wikipedia.org/wiki/ECMAScript#Version_correspondence –

+0

@Juan - ehh true、しかし、あなたは本当にこの場合にそれを防ぐことはできません。 – Neal

12

ソリューションは、( "のcreateElement" の建設を使用して)http://www.docsteve.com/DocSteve/Samples/JS/js_version.htmlとして、簡単なJavaScript関数への提案:

<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> 
+0

一時的に注入し、検出後に消去するための素晴らしいソリューションです。ライブラリの統合は不要です。 – ahnbizcad

+0

私はどこでもJSバージョン1.9と2.0についての情報を見つけることができませんでした。最新バージョンは1.8.5か? https://en.wikipedia.org/wiki/JavaScript#Version_history –

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

+0

これは理論的に質問に答えるかもしれませんが、(/ meta.stackoverflow.com/q/8259)ここに答えて、参考のためのリンクを提供してください。 –

+0

ジェームズがこのメタ質問を私の告知に持ってきてくれてありがとう、私はそれを将来思いつきます。 – Vickar

+0

ありがとう、私たちは何もコピーする必要はありませんので非常に便利です! – Nicofisi

関連する問題