Я столкнулся с ошибкой / недокументированной функцией в IE 7, 6.5 (возможно, с другими?). Это не влияет на Opera (10.5x), Firefox (3.5.x) или, скорее всего, на любой другой браузер (это все, что я тестировал до сих пор). Кажется, это не документированная способность Javascript.
При включении комментария, обозначенного двойной косой чертой и сразу после двойного знака (//@@
), весь файл .js
становится бесполезным. Я проверил несколько вариантов, и вот что я нашел (где fail = JS не загружен, pass = JS загружен):
- ошибка:
//@@
- ошибка:
//@ @
- fail:
//@@@
- любое число @ не имеет значения
- ошибка:
//@@ text
- любое следующее содержимое не помогает
- fail:
//@hello@
- любой контент между @, кажется, не помогает
- проход:
// @@
- pass:
// @ @
- пробел перед первым @, кажется, мешает
- pass:
//hello @@
- любой контент до первого @, кажется, препятствует
- pass:
/*@@*/
- кажется, применяется только к //
стилю комментария
IE 7 - просто игнорирует файл, при попытке обратиться к содержимому этого файла вы получаете сообщение об ошибке "<function/object> is undefined
". IE6.5 прилично сообщает "Invalid character
", что значительно улучшает вашу способность найти проблему!
И вот вопрос : Кто-нибудь знает, почему это происходит и что происходит?
Вы можете работать с ним (вставить пробел, использовать другой стиль комментария и т. Д.), Но стоит отметить проблему, так как отладка может занимать много времени.
UPDATE:
Как воспроизвести:
Источник: 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>
Источник: flaw.ie.js
//@@
alert('hello');
Источник: turnon.cc.js
/*@cc_on
@*/
Результат:
IE: страница: Мир
FF / Opera: Оповещение: Привет! страница: World
Потенциальный вывод: Как только условная компиляция включена в IE, будьте осторожны с комментариями, смутно напоминающими синтаксис.