При использовании Google Chrome я получаю следующее сообщение об ошибке:
Ошибка:
Uncaught SyntaxError: Unexpected token <
Это происходит сразу после моего объявления типа документа вверху моей HTML-страницы.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Есть идеи, что это за сообщение об ошибке JavaScript? Это происходит только с Google Chrome (отлично работает в Safari, Firfox и IE)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Может быть, тип содержимого HTTP не text/html или application/xhtml+xml?
Я бы определил тип содержимого HTTP?
Я нашел этот вопрос групп Google.
Некоторые другие сталкиваются с проблемой, но без решения.
http://www.google.com/support/forum/p/Chrome/thread?tid=7e9f87870a37e401&hl=en
Попробуйте изменить порядок объявлений css и js. Работал у меня.
Эта проблема возникла у меня, когда я использовал JQuery для загрузки HTML из XMLHTTPRequest, который был HTML, но тип mime был text / javascript.
Так, например, у меня был такой код, как:
jQuery.ajax({
data:'params=here',
success:function(request) {
jQuery('#country_list_container').html(request);
},
type:'get',
url:'/getHtml'
});
jQuery отправляет запрос к getHtml, а getHtml возвращает простой фрагмент HTML с mime / type, но "text/javascript". Причина, по которой действие getHtml возвращало text/javascript, заключается в том, что заголовок accept запроса от jQuery:
"Accept:text/javascript, text/html, application/xml, text/xml, */*"
Итак, все, что мне нужно было сделать, это принудительно создать заголовок text/html, и все сработало отлично.
Ошибка синтаксического анализа, которую вы видите, является результатом попытки Javascript оценить содержимое.
Можете ли вы предоставить пример кода, отредактированного с принудительным изменением заголовка?
Думаю, вы имеете в виду именно этот header('Content-Type: text/html; charset=utf-8');
У меня возникла эта проблема, когда я пытался настроить .innerHTML, динамически сгенерированный с помощью php (он был сгенерирован многострочным).
Замена символов новой строки пробелами решила проблему.
В моем случае это было вызвано прерыванием оператора eval(). Когда я исправил проблему, сообщение об ошибке исчезло.
В настоящее время (июнь 2010 г.) в Chrome Javascript есть некорректная инструкция eval(). eval() будет прерван без выдачи сообщения об ошибке, если переменной в операторе eval() было присвоено зарезервированное слово «delete». На обнаружение этой ошибки у меня ушла почти неделя, потому что eval() прерывается без каких-либо предупреждений или сообщений об ошибке, а прерывание имеет неприятные побочные эффекты.
Я использовал eval() для достижения этого результата: obj.delete = somevalue.
Этот код вызовет прерывание eval ():
var obj = new Object();
var x = 'delete';
var y = 2;
eval('obj.' + x + ' = y');
Этот код работает:
var obj = new Object();
var x = 'delete';
var y = 2;
eval('obj[\'' + x + '\'] = y');
Таким образом, не используйте eval() для создания obj.delete = somevalue. Используйте eval() для создания эквивалентного оператора obj["delete"] = somevalue.
Если вы возвращаете ответ на запрос ajax в JSON, убедитесь, что вы используете 'application/json' для Content-Type.
Если это приложение Rails, проверьте, что format.js находится в блоке response_to.
Рискуя откопать старую ветку (я считаю, что лучше хранить всю информацию в одном месте), Chrome, похоже, все еще выдает эти ошибки. Я получил следующее при разработке сайта и пробовал все, что угодно, со страницей JS и PHP, чтобы избавиться от этого. Я получил ошибку:
error in event handler for 'undefined': SyntaxError: Unexpected token ILLEGAL
chrome/EventBindings:183
В конце концов, при проверке правильности кода в FireFox я наткнулся на ответ как предупреждение о том, что в каком-то тексте есть '&', который следует преобразовать в '&' - как только это было сделано, ошибка Chrome исчезла.
Стив
Чтобы расширить это, данные из запроса к базе данных с '&' в нем также вызовут эту ошибку ...
Я также столкнулся с этой ошибкой в Chrome Dev Tools, и моя причина была похожа на причину Мэтью О'Риордана, за исключением того, что это был не MIME-тип Accept, а скорее сломанный URL-адрес AJAX.
Я изменил структуру папок и забыл обновить URL-адрес; как только я исправил URL, ошибка Dev Tools JS исчезла. Надеюсь это поможет! :)
Можете ли вы произвести небольшое сокращение? Если да, отправьте отчет об ошибке в crbug.com/new и дайте мне знать номер ошибки, чтобы я мог отправить его соответствующим людям.