<noscript> обработка в документах XML - PullRequest
2 голосов
/ 30 января 2010

Есть ли разница в обработке блоков

1 Ответ

4 голосов
/ 30 января 2010

Лучшее описание, вероятно, приведено в черновике HTML5: http://dev.w3.org/html5/spec/semantics.html#the-noscript-element.

В text / html детали того, что происходит, довольно сложны. Просто перейдите по ссылке выше. Нет смысла воспроизводить здесь.

Для application / xhtml + xml в проекте написано:

Элемент noscript не должен использоваться в документах XML.

Элемент noscript действует только в синтаксисе HTML, он не действует в синтаксисе XHTML.

Таким образом, в application / xhtml + xml содержимое noscript должно отображаться независимо от того, доступен сценарий или нет. Конечно, если сценарий включен , довольно просто использовать сценарий для удаления таких элементов из DOM.

CORRECTION.

Что касается дальнейших исследований, то, что я думаю, означает, что приведенная выше цитата заключается в том, что элемент noscript не влияет на синтаксический анализ .

В разделе XHTML здесь http://dev.w3.org/html5/spec/the-xhtml-syntax.html#the-xhtml-syntax, в проекте написано

Пользовательский агент должен скрывать элементы noscript, для которых включены сценарии, независимо от правил CSS.

Итак, как вы говорите, когда скрипты включены, элемент noscript скрывает свое содержимое. Тем не менее, это все, что он делает, и изображения все равно загружаются. Кроме того, я попробовал это:

<html xml:lang="en-GB" xmlns="http://www.w3.org/1999/xhtml" lang="en-GB">
  <head> 
    <title>Test</title>
  </head>
  <body>
    <p>Test 1</p>
    <noscript id="ns">
      <p>Test 2</p>
      <script type="text/javascript">
        document.getElementById("ns").parentNode.removeChild(document.getElementById("ns"));
      </script>
      <img src="test.gif" alt="test"/>
    </noscript>
  </body>
</html>

И хотя узел noscript удален из DOM, Firefox все еще пытался загрузить изображение.

...