Me he encontrado con función del error/no documentada en IE 7, 6.5 (¿quizás otros?). Esto no afecta a Opera (10.5x) Firefox (3.5.x) o probablemente a cualquier otro navegador (esto es todo lo que he probado hasta ahora). No parece ser una habilidad documentada de Javascript.Error múltiple del comentario de @ JS en IE
Al incluir un comentario denotado por barras dobles, y seguido directamente por el doble en los signos (//@@
), el archivo completo .js
se vuelve inútil. He comprobado varias variaciones y esto es lo que he encontrado (donde fallan = JS no está cargado, pass = JS está cargado):
- fallan:
//@@
- fallan:
//@ @
- fallan:
//@@@
- no parece cualquier número de @ para hacer una diferencia - fallan:
//@@ text
- no parece cualquier contenido siguiente para ayudar a - fallan:
//@[email protected]
- cualquier contenido entre @ no parece ayudar a - pase:
// @@
- pase:
// @ @
- espacio antes del primer @ parece prevenir - pase:
//hello @@
- cualquier contenido antes de la primera @ parece prevenir - pase:
/*@@*/
- sólo parece aplicarse a//
estilo comentario
IE 7 - simplemente ignora el archivo, al tratar de hacer referencia al contenido de ese archivo se obtiene un error en la línea de "<function/object> is undefined
". IE6.5 tiene la decencia de informar "Invalid character
" lo que mejora significativamente su capacidad para encontrar el problema.
Y entonces la pregunta : ¿Alguien sabe por qué está pasando esto y qué está pasando?
Puedes trabajar con él (inserta un espacio, usa el otro estilo de comentario, etc.) pero vale la pena señalar que el problema está ahí, ya que puede llevar mucho tiempo depurarlo.
ACTUALIZACIÓN: cómo reproducir:
Fuente: 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>
Fuente: flaw.ie.js
//@@
alert('hello');
Fuente: turnon.cc.js
/*@cc_on
@*/
Resultado:
IE: la página: Mundial
FF/Opera: Alerta: ¡Hola!página: Mundo
Posible conclusión: Una vez que la compilación condicional está activada en IE, tenga cuidado con los comentarios que se asemejan vagamente a la sintaxis.
Bueno Methodin tiene la causa raíz, no parece que haya una solución (corto de no utilizar las bibliotecas con las declaraciones de compilación condicional y evitar por sí mismo, o ser muy cuidadoso con los signos y comentarios). Definitivamente parece un error, pero también es corto. No hay/* cc_off */comando (al menos no está documentado/no funciona en las versiones de IE que tengo que probar) – Rudu