Ошибка: нечистить SyntaxError: Неожиданный токен <
По какой-то причине я получаю сообщение об ошибке:
Uncaught SyntaxError: Unexpected token <
Для этой строки кода:
title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>',
В этом контексте:
$(document).ready(function() {
$('#infobutton').click(function() {
$('#music_descrip').dialog('open');
});
$('#music_descrip').dialog({
title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>',
autoOpen: false,
height: 375,
width: 500,
modal: true,
resizable: false,
buttons: {
'Without Music': function() {
$(this).dialog('close');
$.cookie('autoPlay', 'no', { expires: 365 * 10 });
},
'With Music': function() {
$(this).dialog('close');
$.cookie('autoPlay', 'yes', { expires: 365 * 10 });
}
}
});
});
Я думаю, что все должно быть хорошо, но я не понимаю, почему <
как-то отбрасывает это.
кричит, забыл показать, где это происходит! Мой плохой,
http://www.marioplanet.com/index.asp
Любые идеи?
Ответы
Ответ 1
Это проблема с браузером, а не с проблемой javascript или JQuery; он пытается интерпретировать угловую скобку как HTML-тег.
Попробуйте сделать это при настройке javascripts:
<script>
//<![CDATA[
// insert teh codez
//]]>
</script>
В качестве альтернативы переместите свой javascript в отдельный файл.
Изменить: Ahh.. с той ссылкой, которую я отслеживал. То, что я сказал, было проблемой не совсем. это проблема, снятая с веб-сайта:
<script type="text/javascript"
$(document).ready(function() {
$('#infobutton').click(function() {
$('#music_descrip').dialog('open');
});
$('#music_descrip').dialog({
title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>',
autoOpen: false,
height: 375,
width: 500,
modal: true,
resizable: false,
buttons: {
'Without Music': function() {
$(this).dialog('close');
$.cookie('autoPlay', 'no', { expires: 365 * 10 });
},
'With Music': function() {
$(this).dialog('close');
$.cookie('autoPlay', 'yes', { expires: 365 * 10 });
}
}
});
});
Вы можете определить ошибку? Он в первой строке: тег <script
не закрыт. Должен быть
<script type="text/javascript">
Однако мое предыдущее предложение все еще стоит: вы должны заключить внутри-тегированные скрипты в блок CDATA или переместить их в отдельно связанный файл.
Это не было проблемой здесь, но это показало бы реальную проблему быстрее.
Ответ 2
У меня был тот же самый симптом, и это была моя проблема, очень сложно отслеживать, поэтому я надеюсь, что это поможет кому-то.
Я использовал JQuery parseJSON()
, и контент, который я пытался разобрать, на самом деле не был JSON, а возвращалась страница с ошибкой.
Ответ 3
Я тоже получил эту ошибку при разработке приложения Backbone с использованием состояния push5 HTML5 в сочетании с .htaccess, который перенаправляет любые неизвестные файлы в index.html.
Оказалось, что при посещении URL-адреса, такого как /something/5
, мой /index.html
эффективно обслуживался в /something/index.html
(благодаря моему .htaccess). Это привело к потере всех относительных URL-адресов моим файлам JavaScript (изнутри index.html), что означало, что у них должно было быть 404'd.
Однако снова из-за моего htaccess вместо 404 при попытке получить JS файлы они вместо этого вернули мой index.html. Таким образом, браузеру был предоставлен индекс .html для каждого файла JavaScript, к которому он пытался подключиться, и когда он оценивал HTML, как если бы он был JavaScript, он возвращал ошибку JS из-за ведущей < (из моего тега в index.html).
Исправление в моем случае (поскольку я служил сайту изнутри подкаталога) заключалось в том, чтобы добавить базовый тег в мой html-заголовок.
<base href="/my-app/">
Ответ 4
Обычно это происходит, когда вы пытаетесь загрузить не-html-ресурс (например, файл jquery library script в виде текста /javascript ), а сервер вместо возврата ожидаемого ресурса JS возвращает HTML вместо этого - обычно 404 страница.
Затем браузер пытается проанализировать ресурс как JS, но поскольку фактически было возвращено HTML-страница, синтаксический анализ не выполняется с синтаксической ошибкой, и поскольку HTML-страница обычно начинается с < character, это символ, выделенный в исключении синтаксической ошибки.
Ответ 5
Обычно он работает, когда вы меняете имя каталога, в котором находится файл.
Это работало для меня, когда я переместил его с "js/" на "../js"
Ответ 6
Если вы столкнулись с этой проблемой только в Chrome и в IE, например, все в порядке, тогда просто включите checkbutton " Отключить кеш" в разделе "Инструменты" (F12 → "Сеть" ) и очистить историю за последний час.
У меня была эта проблема, и выше решение работало для меня.
Ответ 7
попробуйте заменить текст /javascript на text/html, затем сохраните заметку и перезагрузите браузер, а затем верните ее в текст /javascript. Я не знаю, но по неизвестной причине это работает со мной.. Я ищу и копировать-вставлять, и я просто случайно отменил то, что я печатаю, тогда бум kablooey это сработало 0.O кстати я просто noob.. извините, я просто думал, что это может помочь, хотя..
Ответ 8
Я не знаю, получил ли ты ответ. Сегодня я встретил эту проблему, и я подумал, что у меня есть правильный ответ: вы не помещаете файл script в нужное место.
Большинство людей не справляются с этой проблемой, потому что они напрямую помещают скрипты в свой серверный каталог. Я встречаю это, потому что я делаю ссылку исходного файла (html файл) на корневой каталог сервера. Я не связывал файлы script, и я не знаю, как их nginx находит. Но они загружены неправильно.
После того, как я связал все файлы с корневым каталогом сервера, проблема решена.