2017-07-19 1 views
15

Stellen Sie sich vor, ich hätte ein asmjs-Skript, aber bevor ich das Skript starte, möchte ich testen, ob der Browser asm.js unterstützt oder nicht. Wenn es false ist, zeigen Sie eine Nachricht an, die besagt, dass der Browser alt ist oder etwas ähnliches, andernfalls führen Sie das Skript aus.Wie testen Sie die Verfügbarkeit von asm.js in einem Webbrowser?

Können wir die Idee von "use asm" irgendwie verwenden, um festzustellen, ob ein Webbrowser asm.js unterstützt?

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

Könnte nicht machbar sein https://github.com/kangax/compat-table/issues/447 –

+0

Warum möchten Sie das erkennen? Es kann etwas langsamer laufen, wenn es nicht unterstützt wird. –

+0

@ Jonasw glaubst du, es wird funktionieren, auch wenn der Browser ArrayBuffer zum Beispiel nicht unterstützt? –

Antwort

4

Die traurige Situation ist, dass es keine wirklich zuverlässige Möglichkeit gibt, die Browserunterstützung von asm.js zu erkennen.

dieses Segment Rennen einen Fehler produzieren, aber kein abfangbare ein:

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."); 
 
}

Dies ist einer der Fälle, Sie unfreiwillig zu Client-String Prüfung drehen, vielleicht kombiniert mit andere Feature-Überprüfung zu determine which browser and version du hast es zu tun.

Wenn diese Informationen erhalten dann diese Liste überprüfen, die folgenden Browser und Versionen unterstützt (courtesy of caniuse.com) asm.js, ab diesem Zeitpunkt:

Versionsnummer ist seit einschließlich - ich auch mit sehr Browsern inklusive kleine Nutzerbasis als Information ist für diese auch zur Verfügung:

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 unterstützt keine Ahead-Of-Time-Kompilierung aber die Leistung in Chrome 28 verdoppelt"

Verwandte Themen