javascript - 如何在网络浏览器中测试 asm.js 的可用性?

标签 javascript asm.js

假设我有一个 asmjs 脚本,但在运行脚本之前,我想测试浏览器是否支持 asm.js。如果为 false,则显示一条消息,指示浏览器是旧的或类似的东西,否则,执行脚本。

我们能否利用 “使用 asm” 的想法以某种方式检测网络浏览器是否支持 asm.js?

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

最佳答案

可悲的是,似乎没有真正可靠的方法来检测浏览器对 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 的性能翻了一番”

关于javascript - 如何在网络浏览器中测试 asm.js 的可用性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45189257/

相关文章:

javascript - 如何检查 Firefox 是否使用 asm.js 代码?

javascript - 无法解决 Firefox 的 AMS.js 链接限制

javascript - 如何让用户将图像移动到div中进行预览

javascript - 使用 angular-chart.js 在条形图中手动设置 y 轴刻度

javascript - 输入字段的默认值 'password',是否显示?

javascript - 从网页检测我自己的 Firefox 扩展

emscripten - 断言失败 : native function `int_sqrt` called before runtime initialization error while calling c function in . js 文件 (emscripten)

javascript - 如何将值从输入字段传递给 JavaScript 闭包

javascript - 手写 asm.js

javascript - 为什么 asm.js 会降低性能?