Google Chrome: сообщение об ошибке JavaScript - PullRequest
17 голосов
/ 26 декабря 2008

При использовании 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)

Ответы [ 10 ]

14 голосов
/ 26 февраля 2010

Эта проблема возникла у меня, когда я использовал 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 пытается оценить содержимое.

2 голосов
/ 03 июня 2010

В моем случае это было вызвано прерыванием оператора 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.

1 голос
/ 15 августа 2011

Опасаясь утащить старую ветку (я полагаю, лучше хранить всю информацию в одном месте), похоже, что Chrome все еще выдает эти ошибки. Я получил следующее при разработке сайта и попробовал все виды вещей со страницей JS и PHP, чтобы избавиться от него. Я получил ошибку:

error in event handler for 'undefined': SyntaxError: Unexpected token ILLEGAL
chrome/EventBindings:183

В конце концов, проверяя правильность кода в FireFox, я наткнулся на ответ в качестве предупреждения о том, что в некотором тексте было '&', которое следует преобразовать в '&amp;' - как только это было сделано, ошибка Chrome исчезла.

Steve

1 голос
/ 07 июня 2010

Если вы возвращаете ответ на запрос ajax в JSON, убедитесь, что вы используете 'application/json' для Content-Type.

1 голос
/ 08 февраля 2010

Попробуйте изменить порядок объявлений css и js. Работал на меня.

1 голос
/ 26 декабря 2008

Я нашел этот вопрос о группах Google.

Некоторые другие испытывают проблему, но без разрешения.

http://www.google.com/support/forum/p/Chrome/thread?tid=7e9f87870a37e401&hl=en

1 голос
/ 26 декабря 2008

Может быть, тип содержимого HTTP не text/html или application/xhtml+xml?

0 голосов
/ 31 января 2015

Я также сталкивался с этой ошибкой в ​​Chrome Dev Tools, и моя причина была похожа на причину Мэттью О'Риордана, за исключением того, что это был не MIME-тип Accept, а неработающий URL AJAX.

Я изменил структуру папок и забыл обновить URL; как только я исправил URL, ошибка JS Dev Tools исчезла. Надеюсь это поможет! :)

0 голосов
/ 29 ноября 2010

Если это приложение Rails, убедитесь, что файл format.js находится в блоке response_to.

0 голосов
/ 24 апреля 2010

У меня была эта проблема, когда я пытался установить .innerHTML, динамически генерируемый с помощью php (он был сгенерирован многострочно).

Замена символов новой строки пробелами решила проблему.

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