如何在网络浏览器中测试 asm.js 的可用性?
How to test the availability of asm.js in a web browser?
假设我有一个 asmjs 脚本,但在 运行 脚本之前,我想测试一下浏览器是否支持 asm.js。如果是false
,显示一条消息,表明浏览器是旧的或类似的,否则,执行脚本。
我们能否利用 "use 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 does not support Ahead-Of-Time compilation but performance doubled in Chrome 28"
假设我有一个 asmjs 脚本,但在 运行 脚本之前,我想测试一下浏览器是否支持 asm.js。如果是false
,显示一条消息,表明浏览器是旧的或类似的,否则,执行脚本。
我们能否利用 "use 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 does not support Ahead-Of-Time compilation but performance doubled in Chrome 28"