Javascript / Jquery комментирование вызывает ошибки в IE - PullRequest
3 голосов
/ 09 июля 2011

Так что этот пост - это не столько пост "пожалуйста, помогите мне исправить это", сколько вопрос "зачем это менять, чтобы это работало?".Поэтому у меня было написано несколько javascript / jquery, которые работали в firefox и chrome, но в IE возникали ошибки.

Я не мог понять это даже с помощью полезных сообщений от пользователей здесь в stackoverflow.В конце концов я наткнулся на ответ (поскольку я, кажется, обнаружил, что много работаю с кодированием).

Я делал несколько строгий стиль комментирования, которому меня научил один из моих профессоров в области компьютерных наук, где функция имелатакие комментарии:

//@ describe function
//@ params: param1 - function, param2 - function
//@ etc....

Так что я по глупости бросил это в свой javascript только для того, чтобы узнать, что IE действительно не заботился об этом вообще.Когда я удалил символы @, код работал отлично.

Итак, мой вопрос: почему это вызвало ошибки в IE?Разве все, что следует за комментариями «//», не имеет значения?

Ответы [ 2 ]

8 голосов
/ 09 июля 2011

Это действительно похоже на некоторую странную поддержку условных комментариев IE. Похоже, что если @ является первым символом комментария (независимо от того, начинается ли он с // @ или / * @, то IE ищет директиву условного комментария после знака @. См. http://msdn.microsoft.com/en-us/library/8ka90k2e(v=vs.94).aspx для некоторых примеров.

Предложение AlienWebguy должно сработать, потому что первый символ комментария - *. Вы также можете просто поставить пробел перед знаком @:

// @ describe function
// @ params: param1 - function, param2 - function
// @ etc....
6 голосов
/ 09 июля 2011

Возможно, вы думаете о комментировании docblock, которое вы хотели бы заключить в синтаксис комментария блока:

/**
 * Function does this
 * @param <string> $str The string
 * @param <array> $arr The array
 * @return <bool> true if string is in array, false if not
*/

Я вижу, что IE просто глупый. Даже если есть объяснение, почему ваш //@ не сработал, вероятнее всего, это будет действительно глупо, и есть вероятность, что лишь небольшой процент из нас сможет воссоздать его в нашей версии IE.

IE - единственный браузер, насколько мне известно, который просматривает условные комментарии, поэтому я вижу, что они имеют другой анализатор комментариев, чем все другие браузеры, которые могут конфликтовать с в противном случае правильным кодом.

...