jgh*_*ify 3 html html5 w3c-validation jquery-mobile wai-aria
我正在使用jQuery Mobile“多页”文档的网站上工作,其中该网站的多个“页面”可能被编码为单个html文档的div。基本结构如下:
<body>
<div data-role="page" id="page1">
<header>Page 1</header>
<main>Content...</main>
<footer>...</footer>
</div>
<div data-role="page" id="page2">
<header>Page 2</header>
<main>Content...</main>
<footer>...</footer>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我想使用<main>所示的html5 元素,但是w3c验证程序给我一个错误,说“一个文档不能包含多个主要元素”。
我了解w3c标准<main>每个文档只允许一个。然而,对于咏叹调标准role="main"(向其<main>映射)并允许“多个主元素作为DOM后代,假设每个这些都与不同的文档节点相关联的”(https://www.w3.org/TR/wai-aria/角色#main)。
这些jQuery Mobile [data-role='page']div是否算作“不同的文档节点”?<main>如果一次只暴露给最终用户,我可以有多个元素吗?
(请注意,无效的jQuery Mobile页面在文档中<body>,但是用隐藏display:"none"。)
2018-10-10更新
HTML标准现在规定了以下要求:
https://html.spec.whatwg.org/multipage/grouping-content.html#the-main-element
一个文档中不能包含一个以上
main没有hidden指定属性的元素。
因此,现在的答案是,main文档中不能有多个元素-除非其中最多只有一个缺少hidden属性。
https://validator.w3.org/nu/和https://checker.html5.org/现在都将报告错误。
W3C HTML检查器(验证器)的维护者。我对jQuery Mobile多页文档不熟悉,但是似乎main每个逻辑文档只向用户公开一个元素,那么您就符合要求的精神。
W3C检查器对此更为严格,因为通常main每个文档中包含多个文档通常是一个坏主意。但这就是说,当您向检查器提供一个URL进行检查时,它仅查看那里的静态HTML源,并且不执行任何JavaScript,因此在某些情况下可能无法真正看到实际用户会看到的非常准确的表示。
我的意思是,例如,在此处的问题中所述的情况下,似乎用户看到的不是URL上的单个文档,而是一系列逻辑文档。
因此,在这种情况下,您可以尝试使用https://checker.html5.org/代替W3C HTML Checker 来检查文档。因为main它检查了上游WHATWG规范中的要求,该要求在这方面没有W3C版本中的相应要求严格。
换句话说,使用https://checker.html5.org/不会导致多个main元素出错。