为什么在HTML 5网站上使用CDATA?

时间:2011-07-26 22:50:50

标签: javascript jquery html5 cdata

我最近去了myspace网站查看他们的HTML代码是怎么做的,在他们的HTML代码中有这条内联jQuery:

<script type="text/html" id="AutoCompleteResultsTemplate">
<![CDATA[
<* var q = MySpace.Search.Utils.TranslateSpecialChars(this.query); *>
<span class="suggestions">
<*=this.suggestionResource *>
</span>
<ul>
    <* jQuery.each(this.results, function(i,v) {
        jQuery.each(v, function(j, d) {
     *>
    <li data-query="<*=d.displayText *>" data-url="<*= d.url *>">
        <span class="type"><*=d.type *></span>
        <*=MySpace.Search.Utils.HighlightCharacters(d.displayText, q) *>
    </li>
    <* }); 
      }); *>
    <li class="last" data-query="<*=this.query *>" data-url="<*= this.allResultUrl *>">
        <span class="type"><*=this.allResultText *></span>
        <*=this.searchResource *> '<*= this.query *>'
    </li>
</ul>
<iframe></iframe>
]]>
</script>

我以前从未使用过CDATA,但我知道它用于XHTML(当你有内联javascript时,它仍然有效),而myspace当前正在使用HTML 5.他们使用CDATA有什么特别的原因吗?提前谢谢。

1 个答案:

答案 0 :(得分:-1)

粘贴的代码无效 - 没有关闭脚本标记 (OP编辑)脚本元素没有id属性 (在HTML5中添加)“text / html”的类型对于脚本元素无效 (在HTML5中允许),内容无效HTML或脚本。

这是垃圾。

可能它依赖于忽略内容的浏览器,因为无效类型属性,然后依赖于id属性的非标准支持,最后可能得到textContent / innerHTML并对文本做了一些事情。

我称之为垃圾和神秘咒语的网络开发的一个例子。

类似的方法是包含具有伪造src属性值和内容的脚本元素。由于src属性,内容将被忽略,但可以使用textContent / innerHTML检索和使用。至少该方法可以与有效标记一起使用(但仍不推荐)。

修改

CDATA部分应该只应与MathML或SVG(http://www.w3.org/TR/html5/syntax.html#cdata-sections)一起使用。