Nat*_*man 3 html javascript google-chrome html-parsing
好的 - 这是我在一段时间内看到的最愚蠢的故障:
<!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>
Run Code Online (Sandbox Code Playgroud)
这会导致语法错误,因为JavaScript解析器实际上是在读取字符串的内容.多么愚蠢!
我怎样才能输入</script>我的代码.有什么办法吗?
这种行为是否有正当理由?
在X(HT)ML内(当实际处理时),脚本需要作为CDATA进行转义,正是出于这个原因.http://www.w3.org/TR/xhtml1/diffs.html#h-4.8
在XHTML中,脚本和样式元素被声明为具有#PCDATA内容.其结果是,
<与&将被视为标记的开始,以及诸如实体<和&将被识别为XML处理器实体引用<和&分别.在CDATA标记的部分中包装脚本或样式元素的内容可以避免扩展这些实体.Run Code Online (Sandbox Code Playgroud)<script type="text/javascript"> <![CDATA[ ... unescaped script content ... ]]> </script>
如果您的XHTML文档仅作为text/html提供并被视为标记汤,则不适用,您只需要"转义"字符串即可'</scr' + 'ipt>'.
| 归档时间: |
|
| 查看次数: |
833 次 |
| 最近记录: |