Моя среда разработки основана на LAMP (Drupal); есть несколько файлов JS (jQuery), которые обслуживаются для обеспечения различных функциональных возможностей.
До недавнего времени все работало нормально (ну, IE6 был отвратительным, но, по крайней мере, работал). Однако недавно один из моих файлов JS начал отказываться выполнять на всех в IE6 и IE7.
Если файл содержит следующее, я получаю два предупреждения с надписью «HELLO» и «GOODBYE»:
alert('HELLO');
alert('GOODBYE');
Однако, когда я добавляю готовый обработчик, я получаю ровно ноль предупреждений:
alert('HELLO');
$(document).ready(function(){
alert('AWESOME!!!!!!!!!!!!');
}
alert('GOODBYE');
Странно то, что мой код работает нормально (например, мы видим «УДИВИТЕЛЬНЫЙ !!! ...») в Firefox и IE8. Кроме того, этот код хорошо работал в IE6 / 7. Чтобы сделать вещи еще более странными, jQuery в других JS-файлах по-прежнему выполняется без инцидентов. Возможно, у меня слишком много готовых обработчиков? (У меня есть только около пяти ...?)
Есть мысли? Я боролся с этим часами, и я понятия не имею, что происходит. Заранее спасибо за помощь!
UPDATE
Благодаря Alconja (ниже), мы определили, что проблема была в пропущенных скобках и точках с запятой. Я исправил проблему в своем небольшом кусочке тестового кода и предупреждения () выполнялись, как и ожидалось. Однако, когда я вернулся к своей полноразмерной кодовой базе, пара «пара / точка с запятой» присутствовала . Однако, учитывая то, что я испытал при использовании короткого тестового набора (и ошибку, которую я непреднамеренно внес при удалении моего полноразмерного кода до тестового набора), я знал, что проблема была связана с синтаксической ошибкой в javascript. Итак, я просто просмотрел файл, удаляя все большие и большие части кода, пока не появилось окно alert ().
Как и следовало ожидать, (оригинальная) проблема возникла из-за синтаксической ошибки. Мой (неверный) код был:
$.post(
'../ajax/changeUrl',
{
url: url,
},
function(responseText, textStatus, xhr) {
// console.log(this);
// console.log(responseText);
// console.log(textStatus);
// console.log(xhr);
}
);
Как видите, в строке есть дополнительная запятая с надписью 'url: url,'. Как только я удалил эту запятую, скрипт выполнялся правильно. Конечно, Firefox и другие браузеры не стали так сильно критиковать это, как это сделал IE, и я знаю, почему я вставил эту ошибку - это плохая привычка, вызванная снисходительностью PHP с запятыми в определениях массивов (или, возможно, списках параметров / переменных в общем тоже) ...
В любом случае, это исправлено! Итак, еще раз спасибо всем! :)