jquery 选项卡 wcag 可访问性:给定元素不允许角色表示;确保角色属性具有适合元素的值

jquery tab wcag accessiblity: role presentation is not allowed for given element; Ensures role attribute has an appropriate value for the element

Jquery tab is adding role="presentation" to anchors and as per axe 工具,违反了 WCAG,如何解决?

元素来源

<a href="#tabs-1" role="presentation" tabindex="-1" class="ui-tabs-anchor" id="ui-id-1">Nunc tincidunt</a>

To solve this violation, you need to: Fix the following: role presentation is not allowed for given element

从技术上讲,我可以将 role="presentation" 放在我想要的任何元素上。但是,这样做会使元素成为非语义元素(link 本质上变成了 )。 link 不再是 link 可能有正当理由,但在这种情况下,我认为 jquery 使用了错误类型的元素。 link 失去其语义意义 并且 制表位被删除(tabindex 设置为 -1)有什么意义?只需使用 代替。

制表符似乎是通过在

  • 上设置 tabindex 来控制的。

    jqueryui 选项卡也在选项卡本身上设置 aria-expanded,这是错误的。它所需要的只是 aria-selected 设置)。该选项卡未展开任何内容。

    但是,使用 jqueryui 选项卡的屏幕 reader 体验与 tab on the W3 page 非常相似。也就是说,我在使用 jquery 选项卡和 W3 选项卡时听到相同的通知(jqueryui 多余的 "expanded"/"collapsed" 通知除外) .

    所以最终结果是它有效。 link 有 role="presentation" 的事实并不是真正的错误。你应该 contact aXe 对此。 ax努力不给误报,他们很擅长回复问题。

  • 活动 jQuery UI 选项卡的代码严格来说是自相矛盾的。为了清楚起见,我稍微更改了属性的顺序:

    <a href="#tabs-1" tabindex="-1" 
    role="presentation"
    class="ui-tabs-anchor" id="ui-id-1"
    >Nunc tincidunt</a>
    

    具有 href 属性的 a 元素会创建一个 link,并且 link 本身就是焦点顺序(或 Tab 键顺序)的一部分。但是,添加属性 tabindex="-1" 会使它脱离 Tab 键顺序。这会在指针行为(link 仍然可以被点击,即使 jQuery 演示试图通过操纵 CSS 中的指针样式来隐藏它)和基于键盘的行为之间产生差异。

    此外,link(因为这仍然是活动选项卡的实现方式)不是装饰性的;它是 functional,因此属性 role="presentation" 在这里具有误导性。例如,属性 role="presentation" 可用于装饰图像和布局表格。在标签式界面中,最好将其添加到包含link的li元素中,如WAI-ARIA Authoring Practices 1.1.

    可以通过将 role="presentation"a 元素移动到包含 li 元素,将 role="tab"li 元素移动到a 元素,并在选项卡处于活动状态时临时 removing/renaming 来自 a 元素的 href 属性。