如何使用<noscript>元素"正确"?

ygo*_*goe 7 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>
...
Run Code Online (Sandbox Code Playgroud)

验证器的错误消息是:

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

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

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

元素div的内容模型:

  • 流量内容.

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

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

HTML规范打算如何解决这个怪癖?

uno*_*nor 2

您不应该\xe2\x80\x99 使用 HTML5 验证器来验证您的 XHTML 1.1 文档。

\n\n

HTML5 规范对noscript元素的描述如下:

\n\n
\n

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

\n
\n\n

所以XHTML5noscriptdiv不允许\xe2\x80\x99t,但XHTML 1.1中允许\xe2\x80\x99s。

\n