时间:2010-01-30 09:49:52

标签: xml xhtml mime-types web-standards noscript

< noscript>是否有任何区别使用MIME类型 text / html 提供的页面与使用MIME类型 application / xhtml + xml 提供的页面进行块处理?

据我注意到< noscript>如果在浏览器中禁用了JavaScript,则根本不会处理 text / html 页面的块。那么 application / xhtml + xml 页面会发生什么?我怀疑对于这样的页面,当禁用JavaScript时仍会分析该块。但我没有找到任何关于这个问题的澄清。

有人可以指出我适当的W3C标准或提供任何其他澄清吗?

PS。感兴趣的情况是使用< noscript>的访问计数服务。阻止跟踪已禁用JS的访问者。如果< noscript>的元素(例如,零大小的图像)。在任何情况下都会下载块,然后这些服务应该破坏:(

1 个答案:

答案 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仍尝试加载图像。