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

sut*_*tee 54 javascript debugging firefox-addon

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

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

VoY*_*VoY 64

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

var foo = "</script>";
Run Code Online (Sandbox Code Playgroud)

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

  • 这是我的错误的原因,即使脚本传递了JSLint.我将"</ script>"更改为"</ scr"+"ipt>"并修复了它. (16认同)
  • 我无法相信这一点,它解决了这个问题.我一百万年都没猜到过.:( (11认同)
  • 啊.这背后有原因吗? (5认同)
  • 简单地逃避斜线也会起作用. (4认同)
  • 也许您忘记了将脚本包含在HTML注释中。 (2认同)

jam*_*day 57

寻找换行!这些往往是原因.

  • 你知道这个的原因吗? (2认同)

PJ *_*net 23

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

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

$str = str_replace(array("\r", "\n"), '', $str);
Run Code Online (Sandbox Code Playgroud)

  • @NielsBom它只是删除换行符(通过不使用换行符代替) (2认同)

Que*_*eue 20

我刚刚发现它"<\/script>"看起来效果不错"</scr"+"ipt>".


And*_*ges 8

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


小智 8

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

<\/script>
Run Code Online (Sandbox Code Playgroud)

<&#47;script>
Run Code Online (Sandbox Code Playgroud)


Man*_*anu 5

寻找一个包含未转义的单个qoute的字符串,该字符串可以由某些服务器端代码插入。