我正在尝试调试一个在Firefox扩展中读取并执行的JavaScript脚本。我只能通过Firebug控制台看到错误(我的代码对于Firebug是不可见的),并且它报告了一个“未终止的字符串文字”。
我检查了线条及其周围的线条,一切似乎都很好 - 圆括号,括号和引号是平衡的,等等。我应该寻找的其他可能原因是什么?
答案 0 :(得分:60)
大多数浏览器似乎都遇到像这样的代码问题:
var foo = "</script>";
在Firefox,Opera和IE8中,这会导致未终止的字符串文字错误。在序列化包含脚本的html代码时可能非常讨厌。
答案 1 :(得分:56)
寻找换行符!这些往往是原因。
答案 2 :(得分:22)
如果您的数据是通过PHP发布的,这可能会有所帮助
$str = str_replace(array("\r", "\n"), '', $str);
答案 3 :(得分:19)
我刚刚发现"<\/script>"
似乎与"</scr"+"ipt>"
一样有用。
答案 4 :(得分:8)
您可以尝试通过JSLint运行脚本。
答案 5 :(得分:7)
只需转义标记关闭或使用ascii代码
即
<\/script>
即
</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>
这应该有用。