2017-07-19 13 views
15

私はasmjsスクリプトを持っていますが、スクリプトを実行する前に、ブラウザがasm.jsをサポートしているかどうかをテストしてみたいと思います。 falseの場合は、ブラウザが古いかどうかを示すメッセージを表示し、そうでない場合はスクリプトを実行します。Webブラウザでasm.jsの可用性をテストするにはどうすればよいですか?

"use asm"のアイデアを利用して、Webブラウザがasm.jsをサポートしているかどうかを検出できますか?

function MyAsmModule() { 
    "use asm"; 
    // module body 
} 
+4

できない可能性がありますhttps://github.com/kangax/compat-table/issues/447 –

+0

なぜそれを検出したいですか?サポートされていない場合、少し遅く実行される可能性があります。 –

+0

@ JonaswブラウザがArrayBufferをサポートしていない場合でも動作すると思いますか? –

答えて

4

悲しい状況では、asm.jsのブラウザサポートを検出する実際の信頼できる方法はないようです。

try { 
 
    (function MyAsmModule() {"use asm"})(); 
 
    console.log("asm.js OK"); 
 
    // Now, hit F12 to open the browser console just to find a TypeError that states: 
 
    // "asm.js type error: expecting return statement" 
 
} 
 
catch(err) { 
 
    // will never show... 
 
    console.log("asm.js not supported."); 
 
}

これはおそらくと組み合わせて、あなたはしぶしぶクライアントの文字列のチェックを有効にする必要があり、それらの例です:このセグメントが捕捉可能な1エラーを生成しませんが、実行

あなたが扱っているdetermine which browser and versionへの他の機能チェック。

その情報はこの日付のように、ブラウザとバージョンサポート(courtesy of caniuse.com)asm.js以下、このリストをチェックし、その後得られる:

バージョン番号はので含むある - 私はまた、非常にブラウザ付属情報は、同様にこれらのために利用可能であったとして小さなユーザー拠点:

Firefox    : v. 22 
Chrome    : v. 28 (*) 
Edge    : v. 13 
Opera    : v. 15 (*) 
Android browser  : v. 56 (*) 
Opera mobile  : v. 37 (*) 
Chrome for Android : v. 59 (*) 
Firefox for Android : v. 54 
Samsung internet : v. 5 (*) 
QQ browser   : v. 1.2 (*) 
Baidu browser  : v. 7.12 (*) 

*):

を「クローム事前コンパイラが、パフォーマンスはクローム28で倍増をサポートしていません」
関連する問題