我正在尝试调试在 Firefox 扩展中读取并执行的 JavaScript 脚本。我只能通过 Firebug 控制台看到错误(我的代码对 Firebug 不可见),并且它报告“未终止的字符串文字”。
我检查了这条线和它周围的线,一切似乎都很好——括号、大括号和引号是平衡的,等等。我应该寻找哪些其他可能的原因?
我正在尝试调试在 Firefox 扩展中读取并执行的 JavaScript 脚本。我只能通过 Firebug 控制台看到错误(我的代码对 Firebug 不可见),并且它报告“未终止的字符串文字”。
我检查了这条线和它周围的线,一切似乎都很好——括号、大括号和引号是平衡的,等等。我应该寻找哪些其他可能的原因?
大多数浏览器似乎都有这样的代码问题:
var foo = "</script>";
在 Firefox、Opera 和 IE8 中,这会导致未终止的字符串文字错误。在序列化包含脚本的 html 代码时可能会非常讨厌。
寻找换行符!这些往往是原因。
如果我有“声誉”,我会投票给 jamtoday 的答案
如果您的数据来自 PHP,这可能会有所帮助
$str = str_replace(array("\r", "\n"), '', $str);
我刚刚发现这"<\/script>"
似乎和"</scr"+"ipt>"
.
只需转义标签闭包或使用 ascii 代码
IE
<\/script>
IE
</script>
您可以尝试通过JSLint运行脚本。
查找一个字符串,其中包含可能由某些服务器端代码插入的未转义的单个 qoute。
如果您已经完成了任何剪切/粘贴操作:一些在线语法荧光笔会破坏单引号和双引号,将它们转换为格式化的引号对(匹配的开始和结束对)。(虽然我现在找不到任何例子)......所以这需要点击 Command-+ 几次并盯着你的引号字符
尝试不同的字体? 此外,不同的编辑器和 IDE 使用不同的标记器和突出显示规则,而 JS 是一种更动态的解析语言,因此请尝试在 emacs、vim、gedit(使用 JS 插件)中打开文件...如果幸运的话,其中之一它们将显示一条贯穿文件末尾的长紫色字符串。
你有没有逃脱你的正斜杠( / )?我以前遇到过这些问题
过去,我在使用带角度的引号 ( ' ) 时遇到了麻烦,通常是从 Word 复制和粘贴。用常规单引号 ( ' ) 替换它们就可以了。
也许是因为您的 PHP 代码中有换行符。如果您在警报窗口消息中需要换行符,请将其作为转义语法包含在 PHP 代码中每一行的末尾。我通常通过以下方式进行操作:
$message = 'line 1.\\n';
$message .= 'line 2.';
另外,请记住 %0A 是编码的换行符 URL。我花了一段时间才找到我的违规代码中的换行符。
如果没有任何帮助,请寻找一些 uni-code 字符,例如
\u2028
这可能会在多行上破坏您的字符串并引发此错误
你试过Chromebug吗?这是用于扩展的 Firebug。
尝试“二分查找”。删除一半代码,然后重试。如果错误仍然存在,请删除剩余代码的一半。如果错误不存在,请将您删除的内容放回原处,然后删除其中的一半。重复。
您应该能够相当快地将其缩小到几行。我的经验是,在这一点上,你会注意到一些愚蠢的畸形字符串。
如果您不确定错误出现在哪个服务器端资源中,那么在保存到浏览器的 HTML 输出版本上执行此操作可能会很方便。
网页开发人员猜错了查看者的浏览器使用哪种编码。这通常可以通过在页面标题中指定编码来解决。
扫描错误消息提到的#行之前的代码。任何未终止的内容都会导致下游的某些内容(被指责的行#)被标记。
空格是我发现的另一个问题,会导致此错误。使用函数修剪空白可能会有所帮助。
str = str_replace(array("\r\n","\n\r","\r", "\n"), '<br />', stripslashes($str));
这应该有效。