2017-07-19 52 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."); 
 
}

这是那些案件之一,你不情愿不得不转向客户端串检查,或许与联合其他功能检查到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 (*) 

*):“Chrome不支持名列前茅的时间编辑而成,但是表现在Chrome 28加倍”

相关问题