在JSON中结束脚本标记导致chrome解析器错误

时间:2017-10-17 14:04:37

标签: javascript html google-chrome



var c= {"Content":"</SCRIPT>"}
&#13;
&#13;
&#13;

Chrome中的解析器错误。 逃避工作......&lt; / SCRIPT&gt;

https://jsfiddle.net/OndrejSpilka327/banr9836/

真的是铬虫吗?

修改 我不认为论证是正确的。 HTML解析器应该与JavaScript解析器无关。 首先,所包含的内容应该被解析为JavaScript,而不是HTML。这绝对是HTML解析器的错误实现。

为了你的好奇心:

&#13;
&#13;
var c= {"Content":"<SCRIPT></SCRIPT>"}
console.log(c.Content);
&#13;
&#13;
&#13;

在JSFiddle中产生sam错误......这绝对是形成的。

再次可以说SCRIPT标记不能出现在外部SCRIPT标记内,但是SCRIPT标记中包含的内容应该被解析为脚本而不是HTML,特别是如果以常规字符串文字进行转义。

这种论证只是提倡不好的实施。

显然,当使用序列化为json并保留在SCRIPT标记中的自定义内容时,该行为会产生错误。

只是好奇你删除了Felix的标签以及为什么?

1 个答案:

答案 0 :(得分:2)

不,这不是Chrome错误。 HTML解析器对JavaScript一无所知,它会在第一次出现的<script>时关闭</script>标记。如果这是在JavaScript程序的中间,你最终会得到一个无效的程序。

任何具有特殊含义但不应解释为具有特殊含义的字符序列都需要转义或拆分。

另见Why split the <script> tag when writing it with document.write()?