Общие источники неразрывного строкового литерала
Я пытаюсь отладить JavaScript script, который читается в расширении Firefox и выполняется. Я могу видеть ошибки только через консоль Firebug (мой код невидим для Firebug), и он сообщает о "неиспользуемом строковом литерале".
Я проверил линию и строки вокруг нее, и все выглядит как скобки, фигурные скобки и кавычки сбалансированы и т.д. Каковы другие возможные причины, которые я должен искать?
Ответы
Ответ 1
У большинства браузеров, похоже, есть проблемы с кодом вроде этого:
var foo = "</script>";
В Firefox, Opera и IE8 это приводит к ошибке прерывания строки. Может быть довольно неприятным при сериализации html-кода, который включает скрипты.
Ответ 2
Ищите разрывы! Это часто является причиной.
Ответ 3
Я бы проголосовал за jamtoday ответ, если бы у меня была "репутация"
Если ваши данные поступают через PHP, это может помочь
$str = str_replace(array("\r", "\n"), '', $str);
Ответ 4
Я только что обнаружил, что "<\/script>"
работает так же, как "</scr"+"ipt>"
.
Ответ 5
Вы можете попробовать запустить script через JSLint.
Ответ 6
Просто избегайте закрытия тегов или используйте код ascii
т
<\/script>
т
</script>
Ответ 7
Ищите строку, которая содержит unescaped single qoute, который может быть вставлен некоторым кодом на стороне сервера.
Ответ 8
Если вы сделали какую-либо вырезку/вставку: некоторые онлайн-синтаксические маркеры будут калечить одиночные и двойные кавычки, превращая их в отформатированные пары цитат (совпадающие пары открытия и закрытия). (tho я не могу найти никаких примеров прямо сейчас)... Так что влечет за собой несколько ударов Command- + и глядя на ваши символы кавычек
Попробуйте другой шрифт?, другие редакторы и IDE используют разные токенизаторы и выделяют правила, а JS - один из более динамичных языков для синтаксического анализа, поэтому попробуйте открыть файл в emacs, vim, gedit (с JS-плагинами)... Если вам повезет, один из них отобразит длинную фиолетовую строку, проходящую через конец файла.
Ответ 9
Вы избежали косых черт (/)?
У меня были проблемы с ними до
Ответ 10
Вы пробовали Chromebug? Это Firebug для расширений.
Ответ 11
У меня были проблемы с угловыми цитатами в прошлом ('), как правило, из копии и вставки из Word. Замена их обычными одинарными кавычками (') делает трюк.
Ответ 12
Может быть, потому что у вас есть разрыв строки в вашем PHP-коде. Если вам нужно разрывы строк в сообщении вашего окна предупреждения, включите его как экранированный синтаксис в конце каждой строки вашего PHP-кода. Обычно я делаю это следующим образом:
$message = 'line 1.\\n';
$message .= 'line 2.';
Ответ 13
Кроме того, имейте в виду, что% 0A - это кодированный URL-адрес строки перевода строки. Мне потребовалось некоторое время, чтобы найти, где была строка перевода в моем оскорбительном коде.
Ответ 14
Если ничего не помогает, найдите некоторые символы уни-кода, например
\u2028
это может сломать вашу строку на более чем одной строке и выбросить эту ошибку
Ответ 15
Попробуйте "двоичный поиск". Удалите половину кода и повторите попытку. Если ошибка все еще существует, удалите половину оставшегося кода. Если ошибки нет, поместите то, что вы удалили, и удалите половину этого. Повторение.
Вы должны иметь возможность сузить его до нескольких строк довольно быстро. Мой опыт в том, что в этот момент вы заметите какую-то глупую неверную строку.
Это может быть целесообразно выполнить в сохраненной версии вывода HTML в браузере, если вы не знаете, на каком серверном ресурсе находится ошибка.
Ответ 16
Разработчик веб-страницы неправильно понял, какая кодировка используется браузером просмотра. Обычно это можно решить, указав кодировку в заголовке страницы.
Ответ 17
Сканируйте код, который появляется перед строкой #, указанной в сообщении об ошибке. Все, что было уничтожено, привело к тому, что что-то вниз, (обвиняемая строка #), будет помечено.
Ответ 18
Пробел - еще одна проблема, которую я нахожу, вызывает эту ошибку. Использование функции для обрезания пробелов может помочь.
Ответ 19
$str = str_replace (array ( "\ r\n", "\n\r", "\ r", "\n" ), '
', stripslashes ($ str));
Это должно работать.