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"
Könnte nicht machbar sein https://github.com/kangax/compat-table/issues/447 –
Warum möchten Sie das erkennen? Es kann etwas langsamer laufen, wenn es nicht unterstützt wird. –
@ Jonasw glaubst du, es wird funktionieren, auch wenn der Browser ArrayBuffer zum Beispiel nicht unterstützt? –