Многократная ошибка @ JS Comment в IE - PullRequest
5 голосов
/ 09 октября 2010

Я столкнулся с ошибкой / недокументированной функцией в IE 7, 6.5 (возможно, с другими?). Это не влияет на Opera (10.5x), Firefox (3.5.x) или, скорее всего, на любой другой браузер (это все, что я тестировал до сих пор). Кажется, это не документированная способность Javascript.

При включении комментария, обозначенного двойной косой чертой и сразу после двойного знака (//@@), весь файл .js становится бесполезным. Я проверил несколько вариантов, и вот что я нашел (где fail = JS не загружен, pass = JS загружен):

  1. ошибка: //@@
  2. ошибка: //@ @
  3. fail: //@@@ - любое число @ не имеет значения
  4. ошибка: //@@ text - любое следующее содержимое не помогает
  5. fail: //@hello@ - любой контент между @, кажется, не помогает
  6. проход: // @@
  7. pass: // @ @ - пробел перед первым @, кажется, мешает
  8. pass: //hello @@ - любой контент до первого @, кажется, препятствует
  9. 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, будьте осторожны с комментариями, смутно напоминающими синтаксис.

Ответы [ 2 ]

4 голосов
/ 09 октября 2010

Скорее всего, связано с условными комментариями:

http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

1 голос
/ 09 октября 2010

Я не могу воспроизвести это, возможно, это зависит от вашей среды.

Взгляните на это: http://support.microsoft.com/kb/323487/en Может быть, это полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...