我可以在多页文档中使用多个主要元素吗?

Can I use multiple main elements in a multipage document?

我在一个带有 jQuery 移动 "multipage" 文档的网站上工作,该网站可能有多个 "pages" 编码为单个 [=35= 的 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> 

我想使用如图所示的 html5 <main> 元素,但是 w3c 验证器给我一个错误,说 "A document must not include more than one main element."

我知道 w3c 标准只允许每个文档一个 <main>。但是,role="main"<main> 映射到的)的 aria 标准确实允许 "multiple main elements as DOM descendants, assuming each of those is associated with different document nodes" (https://www.w3.org/TR/wai-aria/roles#main).

这些 jQuery 移动 [data-role='page'] div 算作 "different document nodes" 吗?如果一次只向最终用户公开一个元素,我可以有多个 <main> 元素吗?

(请注意,非活动 jQuery 移动页面在文档 <body> 中,但隐藏在 display:"none" 中。)

2018-10-10更新

HTML 标准现在规定了以下要求:

https://html.spec.whatwg.org/multipage/grouping-content.html#the-main-element

A document must not have more than one main element that does not have the hidden attribute specified.

所以现在的答案是,文档中不能有多个 main 元素 — 除非其中最多只有一个缺少 hidden 属性。

https://validator.w3.org/nu/ 否则现在会报告错误。


上一个回答

这里是 W3C HTML 检查器(验证器)的维护者。我不熟悉 jQuery 移动多页文档,但似乎如果每个逻辑文档只向用户公开一个 main 元素,那么您就符合要求的精神。

W3C 检查器对此更加严格,因为一般来说每个文档超过一个 main 通常不是一个好主意。但是就是说,当你给检查器一个 URL 来检查它只查看那里的静态 HTML 源并且不执行任何 JavaScript 所以在某些情况下可能不会真正看到非常准确地表示实际用户将看到的内容。

我的意思是,例如,在此处问题中描述的情况下,用户看到的似乎不是 URL 处的单个文档,而是一系列逻辑文档。

所以在这种情况下,您可以尝试使用 https://checker.html5.org/ to check the document. For main it checks against the requirements in the upstream WHATWG spec 而不是 W3C HTML 检查器,它在这方面不如 W3C 版本中的相应要求严格.

换句话说,使用 https://checker.html5.org/ 你不会得到多个 main 元素的错误。

main 标签的主要目的是帮助屏幕阅读器和其他辅助技术了解主要内容的开始位置。

根据 W3C 标准,每个文档只能使用一次。如果您尝试在每个文档中使用多个 main 标签,w3c 验证器将抛出错误。另一件需要注意的事情是,您不能将它用作文章的后代、aside、footer、header 或 nav 元素。

引自 W3C HTML Editors Draft :

The main content of the body of a document or application. The main content area consists of content that is directly related to or expands upon the central topic of a document or central functionality of an application.

main 不是分节内容,它不会像文章、节或导航那样影响文档的大纲。

但是根据HTML5 Living Standards

There is no restriction as to the number of main elements in a document. Indeed, there are many cases where it would make sense to have multiple main elements. For example, a page with multiple article elements might need to indicate the dominant contents of each such element.

我认为这归结为 SEO。如果您不希望您的 SEO 受到影响,那么我认为您应该避免使用多个 main 标签,而是在 html.

中使用 arai-* 角色标签