2017-07-19 91 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加倍」

相關問題