未终止字符串文本的常见来源
Common sources of unterminated string literal
我正在尝试调试一个在Firefox扩展中读取并执行的JavaScript脚本。我只能通过Firebug控制台看到错误(我的代码对Firebug不可见),并且它报告了一个"未终止的字符串文字"。
我检查了这条线和它周围的线,一切似乎都很好——括号、大括号和引号都是平衡的,等等。我应该寻找的其他可能原因是什么?
大多数浏览器似乎都有这样的代码问题:
var foo = "</script>";
在 Firefox、Opera 和 IE8 中,这会导致未终止的字符串文字错误。序列化包含脚本的 html 代码时可能会非常讨厌。
寻找换行符!这些往往是原因。
如果我有"声誉",我会投票给jamtoday的答案
如果你的数据是通过PHP来的,这可能会有所帮助
$str = str_replace(array("'r", "'n"), '', $str);
我刚刚发现"<'/script>"
似乎既有效又"</scr"+"ipt>"
.
只需转义标签闭包或使用 ascii 代码
即
<'/script>
即
</script>
您可以尝试通过 JSLint 运行脚本。
查找一个字符串,其中包含可能由某些服务器端代码插入的未转义的单个 qoute。
如果您进行了任何剪切/粘贴:一些在线语法荧光笔会破坏单引号和双引号,将它们转换为格式化的引号对(匹配的开始和结束对)。 (我现在找不到任何例子)... 所以这需要点击几次 Command-+ 并盯着你的引号字符
尝试其他字体? 此外,不同的编辑器和 IDE 使用不同的分词器和突出显示规则,而 JS 是解析的更动态的语言之一,因此请尝试在 emacs、vim、gedit 中打开文件(使用 JS 插件)... 如果幸运的话,其中一个将显示一条贯穿文件末尾的长紫色字符串。
你逃脱了正斜杠(/)吗?我以前遇到过麻烦
我过去在倾斜引号( ' )上遇到过问题,通常是从 Word 复制和粘贴。 用常规单引号 ( ' ) 替换它们就可以了。
另外,请记住,%0A 是编码的换行符 URL。我花了一段时间才找到我的违规代码中哪里有换行符。
如果没有帮助,请查找一些 unicode 字符,例如
'u2028
这可能会在多行上中断字符串并引发此错误
你的PHP代码中有换行符。如果需要在警报窗口消息中换行,请将其作为转义语法包含在 PHP 代码中每行的末尾。我通常按以下方式进行:
$message = 'line 1.''n';
$message .= 'line 2.';
你试过Chromebug吗?这是扩展的Firebug。
尝试"二进制搜索"。删除一半的代码,然后重试。如果错误仍然存在,请删除剩余代码的一半。如果错误不存在,请将您删除的内容放回原处,然后删除其中的一半。重复。
您应该能够相当快地将其缩小到几行。我的经验是,在这一点上,你会注意到一些愚蠢的畸形字符串。
如果您不确定错误在哪个服务器端资源中,则对浏览器的 HTML 输出的保存版本执行此操作可能是权宜之计。
网页开发人员猜错了查看器浏览器使用的编码。 这通常可以通过在页面标题中指定编码来解决。
扫描错误消息提到的行 # 之前的代码。任何未终止的内容都会导致下游的某些内容(责备行#)被标记。
空格是我发现的另一个问题,会导致此错误。使用函数修剪空格可能会有所帮助。
str = str_replace(array("'r'n","'n'r","'r", "'n"), '<br />', stripslashes($str));
这应该有效。
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- jQuery匹配JSON对象的部分文本
- onkeyup无法动态创建多个文本区域
- 如何在下面的ES6循环中获得前面的文本
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 借助asp.net验证或java脚本对多个文本进行验证
- 无法在ajaxStart中更改跨度文本
- 高亮显示时编辑文本大小和颜色
- jquery中的文本框验证
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- Sails.js:同时发布文本输入和一个文件
- 使用 javascript 检测文本区域/文本输入中的 HTML 标记,但它应该支持常见的>和<
- 常见问题下拉列表 - 单击时文本颜色已更改
- Jquery 显示/隐藏常见问题解答,文本被覆盖
- 为什么我的任何时间DateTimePicker jQuery插件仍然是一个常见的文本框
- 未终止字符串文本的常见来源