La triste situation est qu'il ne semble pas y avoir de moyen vraiment fiable pour détecter le support du navigateur de asm.js.
L'exécution de ce segment produira une erreur, mais pas un capturables:
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.");
}
C'est l'un de ces cas, vous avez à contrecoeur de se tourner vers la vérification de la chaîne client, peut-être combiné avec autre fonctionnalité de vérification à determine which browser and version vous avez affaire.
Lorsque cette information est obtenue alors consultez cette liste qui suit les navigateurs et les supports (versions courtesy of caniuse.com) asm.js, à compter de cette date:
numéro de version est depuis et y compris - J'inclus dans les navigateurs aussi très petites bases d'utilisateurs, car les informations disponibles pour ces derniers aussi bien:
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 ne supporte pas la compilation en avant-Of-temps, mais la performance a doublé dans Chrome 28"
Peut-être pas faisable https://github.com/kangax/compat-table/issues/447 –
Pourquoi voudriez-vous détecter cela? Il peut courir un peu plus lentement s'il n'est pas supporté. –
@Jonasw pensez-vous que cela fonctionnera même si le navigateur ne supporte pas ArrayBuffer par exemple? –