【发布时间】:2013-10-07 10:00:07
【问题描述】:
这个:
<script type="text/javascript">
var a = new Array("</script>");
alert(a);
</script>
...没有按预期工作(至少对我来说)。字符串"</script>" 被解释为脚本的结尾,即使它在引号中。请查看这些 jsfiddles:
第一个以常规方式声明数组的第一个元素,而第二个以紧凑形式声明它。在这两种情况下,浏览器(Chrome、FF、IE)都会在 "</script>" 处停止脚本并且永远不会收到警报。
无论是使用引号还是双引号,其行为方式都相同。
这是预期的吗?有解决办法吗?
编辑:谢谢大家,我会转义反斜杠。抱歉没能接受大家的回答,我接受了第一个,不过谢谢大家。
Juhana 提供的链接解释了这种行为:
在将元素中的文本节点传递给 JS 引擎之前解析所有 HTML,
</script>在 JS 字符串字面量内没有特殊处理
【问题讨论】:
标签: javascript