section元素的角色属性值无效?

时间:2013-04-29 15:32:23

标签: html5 w3c-validation role wai-aria

在我正在处理的网站中,我有一个section元素,其类型设置为“main”。根据{{​​3}},section元素可以将main用作role属性(role="main")。

但是,当我通过W3C验证器运行我的网站时,我得到一个“元素部分属性角色的主值错误”。错误。我之前在其他网站上使用了main值,它确实通过了验证,但现在它不再有效,报告了相同的错误。

最近是否更改了HTML5规范并取出main值?我应该相信WAI-ARIA还是W3C验证器? WAI-ARIA页面是否已过期?我应该保留section元素而不使用任何角色属性(它将恢复为“区域”默认值)吗?

任何关于此的想法和提示都将受到赞赏:)

3 个答案:

答案 0 :(得分:4)

main角色有效与否,具体取决于您使用的doctype。如果您使用的是HTML5文档类型:<!DOCTYPE html>,则应验证。如果您使用的是早期的文档类型,如XHMTL或html4,则不会。有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Accessibility/ARIA/Web_applications_and_ARIA_FAQ#What_about_validation.3F

如果您需要使用无效的doctype并且必须验证,则可以通过JavaScript添加它们。这样可以避免验证问题。

但是,main角色仅在某些元素上使用时才会生效。对于section元素,有效角色为alertalertdialogapplicationcontentinfodialogdocument,{{ 1}},logmarqueesearch

最新版本的HTML; HTML5.1包括通过status元素对main的本机支持。您可以使用此元素而不是main。见http://www.w3.org/html/wg/drafts/html/master/grouping-content.html#the-main-element

可与<section role="main">一起使用的其他元素包括role="main"articledivfigurecanvas,{{1 }},ppreblockquoteoutputspantabletdtremstrongsmallsciteqdfnabbr,{ {1}},timecodevarsampkbdsubsup,{{1 }},ibumarkrubyrtrp,也许还有其他一些。显然,其中许多是具有隐含语义的专业元素,并且只能在某些上下文中用于自己有效。最有可能的是,bdibdobr将是最合适的元素。有关详细信息,请参阅https://dvcs.w3.org/hg/aria-unofficial/raw-file/tip/index.html#recommendations-table

答案 1 :(得分:1)

将Validator的HTML Doctype选项切换为HTML5,它应该可以使用,至少使用<div>。我刚刚针对下面的标记运行了验证器并验证了它:

<!DOCTYPE html>
<head><title>Foo</title></head>
<body>
<div role='main'>
<p>foo</p>
</div>
</body>

HTML5验证被标记为实验性,这可以解释为什么它具有<section>的意外行为。

另请注意,验证不是可访问性的先决条件。最好包含role属性,并通过屏幕阅读器用户隐藏该功能的验证失败。

答案 2 :(得分:1)

现在尘埃已经尘埃落定,很明显代码<section role="main"></section>很好并传入了validator

状态right here in this table确实main角色是section元素的有效角色,而

如果你考虑一下,将这种语法无效是荒谬的,那些想要以特定方式创建文档大纲的人应该能够这样做,而不必被迫做<main role="main"><section></section></main>之类的事情来获取围绕这个问题,这将是荒谬的。