Лучшее описание, вероятно, приведено в черновике 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.
ИСПРАВЛЕНИЕ.
При дальнейшем исследовании я думаю, что приведенная выше цитата означает, что элемент 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 все равно пытался загрузить изображение.
person
Alohci
schedule
30.01.2010