Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 脚本标记内的HTML实体未转换? 功能测试(){ 警报(“spanblahspan”); } 第三:斯潘布拉斯潘_Javascript_Xml - Fatal编程技术网

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('&lt;span&gt;blah&lt;span&gt;');
    }
</script>
<a href="#" onclick="test();">First</a><br />
<a href="#" onclick="alert('&lt;span&gt;blah&lt;span&gt;');">Second</a><br />
Third: &lt;span&gt;blah&lt;span&gt;