Зачем использовать CDATA на веб-сайте HTML 5? - PullRequest
2 голосов
/ 27 июля 2011

Недавно я зашел на сайт myspace, чтобы узнать, как у них дела :) в их HTML-коде есть фрагмент встроенного jQuery в их HTML-коде:

<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 голосов
/ 27 июля 2011

Вставленный код недействителен - нет закрывающего script tag (OP edit) . Нет атрибута id для элементов скрипта (добавлено в HTML5) и тип "text / html" недопустим для элементов скрипта (разрешено в HTML5) , содержимое не является допустимым HTML или сценарием.

Это барахло.

Вероятно, это зависит от того, что браузеры игнорируют содержимое из-за недопустимого атрибута типа , затем зависит от нестандартного suport для атрибута id, и, наконец, может получить textContent / innerHTML и что-то делает с текстом.

Я бы назвал это мусором и примером веб-разработки от мистического заклинания.

Аналогичный подход заключается в том, чтобы включать элементы сценария со поддельным значением и содержимым атрибута src. Содержимое будет игнорироваться из-за атрибута src, но может быть получено и использовано позже с помощью textContent / innerHTML. По крайней мере, этот подход можно использовать с допустимой разметкой (но все еще не рекомендуется).

Редактировать

CDATA разделы должны использоваться только с MathML или SVG (http://www.w3.org/TR/html5/syntax.html#cdata-sections).

...