未终止字符串文字的常见来源

时间:2008-10-22 21:09:18

标签: javascript debugging firefox-addon

我正在尝试调试一个在Firefox扩展中读取并执行的JavaScript脚本。我只能通过Firebug控制台看到错误(我的代码对于Firebug是不可见的),并且它报告了一个“未终止的字符串文字”。

我检查了线条及其周围的线条,一切似乎都很好 - 圆括号,括号和引号是平衡的,等等。我应该寻找的其他可能原因是什么?

19 个答案:

答案 0 :(得分:60)

大多数浏览器似乎都遇到像这样的代码问题:

var foo = "</script>";

在Firefox,Opera和IE8中,这会导致未终止的字符串文字错误。在序列化包含脚本的html代码时可能非常讨厌。

答案 1 :(得分:56)

寻找换行符!这些往往是原因。

答案 2 :(得分:22)

如果我有“声誉”,我会投票给jamtoday的答案

如果您的数据是通过PHP发布的,这可能会有所帮助

$str = str_replace(array("\r", "\n"), '', $str);

答案 3 :(得分:19)

我刚刚发现"<\/script>"似乎与"</scr"+"ipt>"一样有用。

答案 4 :(得分:8)

您可以尝试通过JSLint运行脚本。

答案 5 :(得分:7)

只需转义标记关闭或使用ascii代码

<\/script>

<&#47;script>

答案 6 :(得分:4)

如果您已经完成任何剪切/粘贴:某些在线语法高亮显示器会破坏单引号和双引号,将它们转换为格式化的引用对(匹配的开始和结束对)。 (因为我现在找不到任何例子)......所以这需要几次命令 - 并且盯着你的引号字符

尝试一个different font?,不同的编辑器和IDE使用不同的标记器并突出显示规则,而JS是要解析的更动态的语言之一,所以尝试在emacs,vim,gedit(使用JS插件)中打开文件...如果你运气好的话,其中一个会在文件末尾显示一条长紫色的字符串。

答案 7 :(得分:4)

查找一个字符串,其中包含可能由某些服务器端代码插入的未转义单引号。

答案 8 :(得分:2)

你逃脱了正斜杠(/)吗?

之前我遇到过麻烦

答案 9 :(得分:1)

如果没有任何帮助,请寻找一些像

这样的单码字符
\u2028

这可能会在多行上破坏您的字符串并抛出此错误

答案 10 :(得分:1)

你试过Chromebug吗?这是扩展的Firebug。

答案 11 :(得分:1)

我在过去(')通常是从Word复制和粘贴中使用有角度的引号时遇到了麻烦。用常规单引号(')替换它们就可以了。

答案 12 :(得分:1)

也许是因为你的PHP代码中有换行符。如果您需要在警报窗口消息中使用换行符,请将其作为PHP代码中每行末尾的转义语法包含在内。我通常按​​以下方式进行:

$message = 'line 1.\\n';
$message .= 'line 2.';

答案 13 :(得分:1)

另外,请记住,%0A是已编码的换行符字符URL。我花了一段时间才找到我的违规代码中的换行符。

答案 14 :(得分:0)

空格是我发现的另一个问题,导致此错误。使用函数修剪空白可能会有所帮助。

答案 15 :(得分:0)

扫描之前的代码错误消息中提到的行#。无论什么是未终止的,都会导致下游的某些事情(指责行#)被标记。

答案 16 :(得分:0)

网页开发人员猜测观众的浏览器使用了哪种编码。这通常可以通过在页面标题中指定编码来解决。

答案 17 :(得分:0)

尝试“二分搜索”。删除一半代码,然后重试。如果错误仍然存​​在,请删除剩余代码的一半。如果错误不存在,请将删除的内容重新放入,并删除一半。重复。

你应该能够很快将它缩小到几行。我的经验是,在这一点上,你会注意到一些愚蠢的畸形字符串。

如果您不确定错误所在的服务器端资源,那么在保存的HTML输出版本上执行此操作可能是有利的。

答案 18 :(得分:-3)

$ str = str_replace(array(“\ r \ n”,“\ n \ r”,“\ r”,“\ n”),'
',stripslashes($ str)); < / p>

这应该有用。