Google Chrome: сообщение об ошибке JavaScript
При использовании Google Chrome появляется следующее сообщение об ошибке:
Ошибка:
Uncaught SyntaxError: Unexpected token <
Это происходит непосредственно после моего объявления doctype в верхней части моей 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)
Ответы
Ответ 1
Эта проблема возникла для меня, когда я использовал 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, но с типом/типом "text/javascript"
. Причина, по которой действие getHtml
возвращалась text/javascript
, заключается в том, что заголовок accept запроса из jQuery:
"Accept:text/javascript, text/html, application/xml, text/xml, */*"
Итак, все, что мне нужно было сделать, это заставить заголовок text/html
, и все работает отлично.
Ошибка анализа, которую вы видите, является результатом того, что Javascript пытается оценить содержимое.
Ответ 2
В моем случае это было вызвано прерыванием eval()
. Когда я исправил проблему, сообщение об ошибке исчезло.
В настоящее время (июнь 2010) у Chrome Javascript есть багги eval()
. eval()
будет отменен без выдачи сообщения об ошибке, если переменной в инструкции eval()
было присвоено зарезервированное слово "delete
". Мне потребовалось почти неделю, чтобы раскрыть эту ошибку, потому что eval()
прерывается без предупреждения или сообщения об ошибке, а отмена имеет неприятные побочные эффекты.
Я использовал eval()
для достижения этого результата: obj.delete = somevalue.
Этот код вызовет eval() abort:
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
.
Ответ 3
Может быть, тип содержимого HTTP не text/html
или application/xhtml+xml
?
Ответ 4
Я нашел этот вопрос в Google Groups.
Некоторые другие испытывают проблему, но без разрешения.
http://www.google.com/support/forum/p/Chrome/thread?tid=7e9f87870a37e401&hl=en
Ответ 5
Попробуйте переключить порядок объявлений css и js. Работал для меня.
Ответ 6
Если вы возвращаете ответ на запрос ajax в JSON, убедитесь, что вы используете 'application/json'
для Content-Type.
Ответ 7
Из-за риска выемки старого потока (я считаю, что лучше хранить всю информацию в одном месте), Chrome все еще бросает эти ошибки. Я получил следующее при разработке сайта и пробовал всевозможные вещи со страницей JS и PHP, чтобы избавиться от него. Ошибка, которую я получил:
error in event handler for 'undefined': SyntaxError: Unexpected token ILLEGAL
chrome/EventBindings:183
В конце концов, проверяя достоверность кода в FireFox, я наткнулся на ответ как предупреждение о том, что в некотором тексте, который должен быть преобразован в '&'
, был '&'
- после того, как это было сделано, ошибка Chrome ушла.
Стив
Ответ 8
У меня была эта проблема, когда я пытался установить .innerHTML
динамически сгенерированный php (он был сгенерирован многострочным).
Замена новых символов строки пробелами решила проблему.
Ответ 9
Если приложение Rails проверяет, что format.js находится в блоке response_to.
Ответ 10
Я также столкнулся с этой ошибкой в Chrome Dev Tools, и моя причина была похожа на Мэтью О'Риордана, за исключением того, что это был не признак MIME-типа, а скорее сломанный URL-адрес AJAX.
Я изменил структуру папок и забыл обновить URL-адрес; как только я исправил URL-адрес, ошибка Dev Tools JS Error исчезла.
Надеюсь это поможет!:)