如何使用<noscript>元素“右”?</noscript>

时间:2011-11-09 14:27:04

标签: html validation

我今天发现的HTML验证器 - http://html5.validator.nu/ - 说我使用<noscript>元素是错误的。我的XHTML源代码是这样的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<body>
<div id="head">
<noscript>
<p>JavaScript is disabled.</p>
</noscript>
...

来自验证程序的错误消息是:

  

错误:在此上下文中,XHTML元素noscript不允许作为XHTML元素div的子元素。 (抑制此子树中的更多错误。)

     

可以使用元素noscript的上下文:

     
      
  • 在HTML文档的head元素中,如果没有祖先noscript元素。
  •   
  • 如果没有祖先的noscript元素,那么在HTML文档中需要使用短语内容。
  •   
     

元素div的内容模型:

     
      
  • 流量内容。
  •   

现在我继续阅读Mozilla文档,并尝试了解这意味着什么。我找到了一些关于内容类别,流内容,措辞内容,属于每个类别的元素(无论“属于”意味着什么)以及如何使用<noscript>元素的信息。 (https://developer.mozilla.org/en/HTML/Element/noscript

我现在知道这一点:<div>必须包含流内容。必须在措辞内容中出现<noscript>。这显然不匹配。我该如何管理?尽管如此,许多元素都在流动和短语中。它们似乎不是分离集,所以有些人无法决定,或者我没有得到它。

HTML规范打算如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

您不应使用HTML5验证程序来验证您的XHTML 1.1文档。

HTML5规范说明了noscript element

  

不得在XML文档中使用noscript元素。

因此在XHTML5中不允许在noscriptdiv,但在XHTML 1.1中允许这样做。

答案 1 :(得分:2)

您不能在XHTML / XML文档中使用“noscript”,因为它会禁用“noscript”内容的解析器,而您无法在XML中执行此操作。无法暂时禁用或关闭解析器。

例如,CSE HTML Validator为XHTML文档生成此消息: XHTML文档不得使用“noscript”元素。这是因为“noscript”的工作方式是在启用脚本时“关闭”解析器,这不能用XML完成。此外,HTML5中不允许使用“noscript”元素。

如果要正确使用“noscript”,则需要将文档类型更改为HTML5(推荐)或HTML4而不是XHTML。

答案 2 :(得分:0)

使用official validator验证您的HTML。以下代码验证完全适合我:

<!DOCTYPE html>
<html>
  <head>
    <title>I AM YOUR DOCUMENT TITLE REPLACE ME</title>
  </head>
  <body>    
    <div id="head">
      <noscript>
        <p>JavaScript is disabled.</p>
      </noscript>
    </div>
  </body>
</html>

编辑:有趣的是,W3C验证器声称解析器基于您提供的链接上的验证器。

  

'上传的文档已成功检查为HTML5。这意味着有问题的资源将自己标识为“HTML5”,并且我们成功地对其进行了正式验证。我们用于此检查的解析器实现基于validator.nu(HTML5)。'

http://validator.nu的验证器可能是旧版本。 修改编辑:不,它也可以在那里验证。检查为HTML5和XHTML 1.0 Strict。