我今天发现的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规范打算如何解决这个怪癖?
您不应该\xe2\x80\x99 使用 HTML5 验证器来验证您的 XHTML 1.1 文档。
\n\nHTML5 规范对noscript元素的描述如下:
\n\n\n该
\nnoscript元素不得在 XML 文档中使用。
所以XHTML5noscript中div不允许\xe2\x80\x99t,但XHTML 1.1中允许\xe2\x80\x99s。