在我现在工作的一个网站中,我有一个类型被设置为"main“的部分元素。根据WAI-ARIA的说法,section元素可以使用main作为role属性(role="main")。
但是,当我通过W3C验证器运行我的站点时,我得到一个"Bad value main for attribute role on element section“。错误。我之前在另一个网站中使用了main值,它确实通过了验证,但现在它不再有效,并报告了相同的错误。
最近是否更改了HTML5规范并去掉了main值?我应该相信WAI-ARIA还是W3C验证器?WAI-ARIA页面是否已过期?我是否应该只保留没有任何角色属性的section元素(它将恢复为"region“默认值)?
任何关于这方面的想法和技巧都将不胜感激:)
发布于 2013-04-30 07:56:40
main角色是否有效取决于您使用的文档类型。如果您使用的是HTML5文档类型:<!DOCTYPE html>,那么它应该是有效的。如果您使用的是较早的文档类型,如XHMTL或html4,则不会。详情请参见https://developer.mozilla.org/en-US/docs/Accessibility/ARIA/Web_applications_and_ARIA_FAQ#What_about_validation.3F。
如果需要在无效的地方使用文档类型,并且必须进行验证,则可以通过JavaScript添加它们。这将避免验证问题。
但是,只有在某些元素上使用时,main角色才会生效。对于section元素,有效角色是alert、alertdialog、application、contentinfo、dialog、document、log、marquee、<代码>d13和<代码>d14。
最新版本的HTML;HTML5.1通过main元素包含了对main的本地支持。您可以使用此元素而不是<section role="main">。请参阅http://www.w3.org/html/wg/drafts/html/master/grouping-content.html#the-main-element
其他可与role="main"一起使用元素包括article、div、figure、canvas、p、pre、blockquote、output、D27、D28、D29、D30、D31、D32、D33、D34、D35、D36、D37、D38、D39、D40、D41、D42、D43、D44、D45、D46、D47、D48mark、ruby、rt、rp、bdi、bdo、br和wbr,也许还有其他一些。显然,它们中的许多都是具有隐含语义的专家元素,并且只能在特定上下文中使用才能有效。最有可能的是,main、div或article将是最适合使用的元素。有关更多信息,请参阅https://dvcs.w3.org/hg/aria-unofficial/raw-file/tip/index.html#recommendations-table
发布于 2013-12-08 06:17:05
现在尘埃落定了,很明显,代码<section role="main"></section>已经很好了,并传入了validator。
它确实声明了right here in this table,main角色对于section元素和是有效的角色,因此它应该是。
如果你仔细想想,让这个语法无效是荒谬的,那些想要以特定方式创建文档大纲的人应该能够做到这一点,而不是被迫做一些像<main role="main"><section></section></main>这样的事情来绕过这个问题,那将是荒谬的。
发布于 2013-04-30 04:35:02
将验证器的HTML Doctype选项切换为HTML5,它应该可以工作,至少可以使用<div>。我刚刚对下面的标记运行了验证器,它验证了:
<!DOCTYPE html>
<head><title>Foo</title></head>
<body>
<div role='main'>
<p>foo</p>
</div>
</body>HTML5验证被标记为实验性的,这可能解释了为什么它在<section>中有意外的行为。
另请注意,验证不是可访问性的先决条件。最好包括role属性和失败验证,这将使屏幕阅读器用户无法使用该功能。
https://stackoverflow.com/questions/16282584
复制相似问题