javascript - 脚本标签内的 HTML 实体未转换?

标签 javascript xml

<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;

演示:http://jsfiddle.net/LPYTZ/

为什么第一个结果不同?是<script>标签以某种方式从实体转换中排除?

最佳答案

在 HTML 中,script 和 style 元素是 defined in the DTD as containing CDATA .这意味着实体和标签将被忽略,直到解析器遇到看起来像结束标签的东西。

XHTML is different这些元素中的实体和标签功能正常——但仅当被解析为 XHTML 时。您可以使用 <![CDATA[ … ]]> 将内容明确标记为 CDATA .

浏览器会使用 HTML 规则将 XHTML 视为 text/html,这会导致在您尝试编写在两组规则下都正确的代码时出现大量麻烦。

避免问题的最简单方法是将脚本保存在外部文件中并使用 src属性以包含它们。

关于javascript - 脚本标签内的 HTML 实体未转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4227895/

相关文章:

xml - pig 输出为XML

jquery 设置 xml cdata

javascript - 在 ng-repeat 中隐藏元素

xml - 通过 XSLT 构建 XML 的缺失部分

javascript - 为什么jQuery中这行代码要用li呢?

javascript - JSONArray 上的 Splice 方法

java - 如何将 XML 文件中的 x 和 y 坐标解析为 Java 中的 Point2D 数组?

java - XSL 多列切换

javascript - 检测 iframe 内容高度变化

javascript - 如何使用 RequireJS AMD 让函数公开其对象和成员方法