Lors de la recherche de commentaires conditionnels JavaScript pour IE, je suis tombé sur @cc_on. Cela semble fonctionner. Cependant, le wikipedia entry des commentaires conditionnels fournit le code suivant pour IE plus robustes détections, spécifiquement IE6:/* @ cc_on et la détection IE6
/*@cc_on
@if (@_jscript_version > 5.7)
document.write("You are using IE8+");
@elif (@_jscript_version == 5.7 && window.XMLHttpRequest)
document.write("You are using IE7");
@elif (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))
document.write("You are using IE6");
@elif (@_jscript_version == 5.5)
document.write("You are using IE5.5");
@else
document.write("You are using IE5 or older");
@end
@*/
La question est, je reçois un javascript « attendu constant » erreur sur !window.XMLHttpRequest
.
De toute évidence, Wikipédia a besoin d'aide, et je dois le faire fonctionner. Quelqu'un peut m'aider?
« IE Plus robustes détections »? Je pense que les commentaires conditionnels fournissent la forme la plus robuste de détection d'IE possible. ** Ne pas ** s'appuyer sur la version JScript pour déterminer la version IE, car ils sont indépendants. Voir le point 4 de http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html#c1774947112904387635 De plus, vous ne devriez pas utiliser la détection du navigateur ; utiliser la détection de caractéristiques: http://www.nczonline.net/blog/2009/12/29/feature-detection-is-not-browser-detection/ –
La détection de @_jscript_version ne doit être utilisée que si vous connaissez la différence exacte entre versions de moteur JavaScript et vous souhaitez cibler cette différence en quelque sorte - par exemple, émuler une fonctionnalité manquante. Par exemple, jscript 5.1 n'a pas défini les méthodes d'appel/d'application prototype de Function, ni Array.prototype.push. Il est donc prudent de détecter cette @_jscript_version et d'ajouter un support par programme pour ces fonctionnalités. Cependant, comme Marcel l'a dit, il n'est pas prudent de supposer que @_jscript_version de 5.1 correspond à IE5.01 car vous pourriez facilement mettre jscript à jour depuis Windows Update. –
@Vitaly: Je ne veux pas trop pinailler, mais les exemples que vous avez donnés peuvent être testés avec la détection de caractéristiques, donc vous n'avez pas besoin de tester Javascript version> = 1.3 ou quelque chose comme ça. Utilisez simplement 'if (! Function.prototype.call) {Function.prototype.call = foo; } ', etc., comme Oz.js fait: http://code.google.com/p/oz-js/source/browse/trunk/oz.js#224 –