【发布时间】:2011-02-11 09:37:07
【问题描述】:
好的 - 这是我一段时间以来见过的最愚蠢的故障:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type='text/javascript'>
var data = "</script>";
</script>
</head>
<body>
This should break!
</body>
</html>
这会导致语法错误,因为 JavaScript 解析器实际上正在读取字符串的内容。多么愚蠢!
如何将&lt;/script&gt; 放入我的代码中。有什么办法吗?
这种行为有正当理由吗?
【问题讨论】:
-
转义有什么问题?不仅仅是 Chrome。我在 Windows 7 上的 Firefox 3.6 上对其进行了测试,它也给出了同样的错误结果。
-
逃跑?喜欢
&lt;/script&gt;?那也没用。 -
@Xavier Ho:结果是正确的,预期是错误的。
-
那么期望是什么?
-
关键是HTML没有定义一个单独的脚本类型来解析字符串,并且在字符串中HTML标签是无效的。当它看到
<script>时,它只会查找&lt;/script&gt;- 它并不关心脚本中的字符串可能是什么,也可能不是。
标签: javascript html google-chrome html-parsing