Подтвердить что ты не робот

Общие источники неразрывного строкового литерала

Я пытаюсь отладить JavaScript script, который читается в расширении Firefox и выполняется. Я могу видеть ошибки только через консоль Firebug (мой код невидим для Firebug), и он сообщает о "неиспользуемом строковом литерале".

Я проверил линию и строки вокруг нее, и все выглядит как скобки, фигурные скобки и кавычки сбалансированы и т.д. Каковы другие возможные причины, которые я должен искать?

4b9b3361

Ответ 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>

т

<&#47;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));

Это должно работать.