Javascript 脚本标记内的HTML实体未转换? 功能测试(){ 警报(“spanblahspan”); } 第三:斯潘布拉斯潘
演示: 为什么第一个结果不同?Javascript 脚本标记内的HTML实体未转换? 功能测试(){ 警报(“spanblahspan”); } 第三:斯潘布拉斯潘,javascript,xml,Javascript,Xml,演示: 为什么第一个结果不同?标记是否以某种方式被排除在实体转换之外?是的,标记是特殊的: 尽管样式和脚本元素使用CDATA作为其数据模型,但对于这些元素,用户代理必须以不同的方式处理CDATA。标记和实体必须视为原始文本,并按原样传递给应用程序。字符序列“在HTML、脚本和样式元素中的第一次出现是。这意味着在解析器找到类似于结束标记的内容之前,将忽略实体和标记 这些元素中的实体和标记功能正常,但只有在解析为XHTML时才起作用。您可以使用将内容显式标记为CDATA 浏览器将使用html规则将X
标记是否以某种方式被排除在实体转换之外?是的,标记是特殊的:
尽管
样式
和脚本
元素使用CDATA作为其数据模型,但对于这些元素,用户代理必须以不同的方式处理CDATA。标记和实体必须视为原始文本,并按原样传递给应用程序。字符序列“在HTML、脚本和样式元素中的第一次出现是。这意味着在解析器找到类似于结束标记的内容之前,将忽略实体和标记
这些元素中的实体和标记功能正常,但只有在解析为XHTML时才起作用。您可以使用
将内容显式标记为CDATA
浏览器将使用html规则将XHTML视为文本/html,当您试图编写在这两组规则下都正确的代码时,这会导致一个大麻烦
避免问题的最简单方法是将脚本保存在外部文件中,并使用src
属性包含它们。因为我已经有了XHTML(在JSFIDLE中也有)+1 for The“浏览器将使用html规则将XHTML视为文本/html“部分”。@AndreKR:重要的是MIME媒体类型,而不是内容。HTML5呢?@PedroGimeno-HTML5是HTML(除非是XHTML)。@Quentin,HTML5可能是HTML,但因此没有DTD。您的回复引用了HTML5不存在的DTD。这就是我问的原因。
<script type="text/javascript">
function test() {
alert('<span>blah<span>');
}
</script>
<a href="#" onclick="test();">First</a><br />
<a href="#" onclick="alert('<span>blah<span>');">Second</a><br />
Third: <span>blah<span>