我们可以在具有aria-role = main的div中有一个具有aria-role = main的div

时间:2017-01-25 16:52:21

标签: html accessibility wai-aria

这是一个有效的场景:

代码:

<html>
   <div role = "main">
      <div role = "main">
      </div>
   </div>
</html>

在具有角色main的div中具有角色main。它会在屏幕阅读器中引起任何问题吗?

2 个答案:

答案 0 :(得分:3)

The HTML5 documentation

  

作者不得文档中包含多个主要元素。

(术语“文件”很重要,必须正确理解,见下文)

话虽如此:

  

会导致屏幕阅读器出现任何问题吗?

是。它可能会导致问题,因为main元素是“跳到主要内容”链接的非突兀的替代。因此,拥有两个main节点可能会导致未指定的行为。

编辑:关于ARIA文档

The ARIA documentation says

  

注意:因为文档和应用程序元素可以嵌套在DOM中,所以它们可能有多个主要元素作为DOM后代,假设每个元素与不同的文档节点相关联,或者通过DOM嵌套(例如,文档中的文档)或使用aria-owns属性。

只要HTML标准网页只有一个document节点(body的默认角色),那么绝不能包含多个{{} {1}}(或main)元素。但您仍然可以将文档节点嵌套在role=main标记内,并且每个文档只能有一个body元素。

答案 1 :(得分:1)

docs are pretty clear on this(注意:应该,而不是必须)

  

在任何文档或应用程序中,作者应该只标记一个具有主要角色的元素。

这是否会导致屏幕阅读器出现问题可能会有所不同。

HTML spec在这里也很有启发性。

修改:update in the HTML 5.2 spec

  

文档中不得有多个可见的主要元素。如果文档中存在多个主要元素,则必须使用§5.1隐藏属性隐藏所有其他实例。