Je suis tombé sur un bug /non documenté fonctionnalité dans IE 7, 6.5 (peut-être d'autres?). Cela n'affecte pas Opera (10.5x) Firefox (3.5.x) ou probablement tout autre navigateur (c'est tout ce que j'ai testé jusqu'ici). Cela ne semble pas être une capacité documentée de Javascript.Plusieurs @ bogue de commentaire JS dans IE
En incluant un commentaire indiqué par des doubles barres obliques et directement suivi d'un double aux signes (//@@
), le fichier entier .js
est rendu inutilisable. J'ai vérifié plusieurs variantes et voici ce que j'ai trouvé (où fail = JS est pas chargé, passe = JS est chargé):
- échouent:
//@@
- échouent:
//@ @
- échouent: semble tout contenu entre @ ne pas aider -
- échouent
//@@ text
tout contenu suivant ne semble pas aider - échouent
- passe:
// @@
- passe:
// @ @
- espace avant le premier @ semble empêcher - passe:
//hello @@
- tout contenu avant la première @ semble empêcher - passe:
/*@@*/
- ne semble appliquer à//
style commentaire
//@[email protected]
:
//@@@
-: - un certain nombre de @ ne semble pas faire une différence
IE 7 - ignore simplement le fichier, en essayant de référencer le contenu de ce fichier, vous obtenez une erreur sur les lignes de "<function/object> is undefined
". IE6.5 a la décence de signaler "Invalid character
" qui améliore considérablement votre capacité à trouver le problème!
Et ainsi le question: Est-ce que quelqu'un sait pourquoi cela se passe et qu'est-ce qui se passe?
Vous pouvez travailler avec (insérer un espace, utiliser l'autre style de commentaire, etc.) mais il est intéressant de noter le problème, car il peut prendre beaucoup de temps à déboguer.
MISE À JOUR: Comment reproduire:
Source: flaw.ie.html
<html lang="en">
<head>
<title>Test</title>
<script src="turnon.cc.js"></script>
<script src="flaw.ie.js"></script>
</head>
<body>
World
</body>
</html>
Source: flaw.ie.js
//@@
alert('hello');
Source: turnon.cc.js
/*@cc_on
@*/
Résultat:
IE: Page: Monde
FF/Opera: Alerte: Bonjour!page: World
Conclusion possible: Une fois que la compilation conditionnelle est activée dans IE, faites attention aux commentaires qui ressemblent vaguement à la syntaxe.
bien Methodin a la cause racine, il ne ressemble pas il y a une solution (à court de ne pas utiliser les bibliothèques avec les déclarations de compilation conditionnelles et les éviter vous-même, ou étant très prudent avec au signes et commentaires). Il semble vraiment être un bug, mais aussi court il n'y a pas de commande/* cc_off */(au moins ce n'est pas documenté/ne fonctionne pas dans les versions IE que je dois tester) – Rudu