< noscript>是否有任何区别使用MIME类型 text / html 提供的页面与使用MIME类型 application / xhtml + xml 提供的页面进行块处理?
据我注意到< noscript>如果在浏览器中禁用了JavaScript,则根本不会处理 text / html 页面的块。那么 application / xhtml + xml 页面会发生什么?我怀疑对于这样的页面,当禁用JavaScript时仍会分析该块。但我没有找到任何关于这个问题的澄清。
有人可以指出我适当的W3C标准或提供任何其他澄清吗?
PS。感兴趣的情况是使用< noscript>的访问计数服务。阻止跟踪已禁用JS的访问者。如果< noscript>的元素(例如,零大小的图像)。在任何情况下都会下载块,然后这些服务应该破坏:(
答案 0 :(得分:4)
最佳描述可能是HTML5草案中的最佳描述:http://dev.w3.org/html5/spec/semantics.html#the-noscript-element。
在text / html中,确切发生的事情的细节非常复杂。只需点击上面的链接即可。在这里再现没有意义。
对于application / xhtml + xml,草案说:
不得在XML文档中使用noscript元素。
noscript元素仅在HTML语法中有效,它对XHTML语法没有影响。
因此,在application / xhtml + xml中,无论脚本是否可用,都应显示noscript的内容。当然,如果启用脚本,那么使用脚本从DOM中删除这些元素是非常简单的。
<强>校正。强>
在进一步的研究中,我认为上述引文的含义是noscript元素对解析没有影响。
在这里的XHTML部分http://dev.w3.org/html5/spec/the-xhtml-syntax.html#the-xhtml-syntax中,草案说
无论CSS规则如何,用户代理都应隐藏为其启用脚本的noscript元素。
因此,正如您所说,当启用脚本时,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仍尝试加载图像。