如何解决 toast 上 "Have an accessible name" 的可访问性错误?

How can I resolve the accesibility error for "Have an accessible name" on a toast?

在 toast(弹出通知)上解决此错误的正确方法是什么? 例如名字?咏叹调标签? 是描述通知中的内容还是组件是什么?

我正在使用 https://bootstrap-vue.org/docs/components/toast

这会呈现类似这样的东西

<div role="alert" aria-live="assertive" aria-atomic="true">
    <div tabindex="0">
        <button type="button" aria-label="Close">×</button>
        <div>
            <p>Some notification text</p>
        </div>
    </div>
</div>

这里有两种解决方法:

  1. 如果你有一个特定的 HTML 元素保存 toast 的标题,给元素一个 id 并使用 id 作为 parent elementNode 中 aria-labelledby 的值例如
<div aria-labelledby="title" role="alert" aria-live="assertive" aria-atomic="true">
  <h3 id="title">I am the title</h3>
  ...
</div>
  1. 您可以只在 parent 节点元素上使用 aria-label 属性,例如:
<div aria-label="Your subscription is about to expire" role="alert" aria-live="assertive" aria-atomic="true">
  ...
</div>

综上所述,它的作用是;它告诉 screen-reader pop-up 是什么,作为一种摘要,就像我们在添加标签时快速掌握输入字段的全部内容一样。

对于使用屏幕 reader 的用户,此提醒没有标题。通过标题,屏幕 reader 向用户宣布新内容的内容。

aria-labelledbyaria-describedby 可用于指向要用作警报标题的元素。

如果您不想添加可见的标题,只需创建一个不可见的标题并指向它即可。

h2{
font-size: 0px;
}
<h2>XXX</h2>

<div role="alert" aria-live="assertive" aria-atomic="true">
    <h2>Your title</h2>
    <div tabindex="0">
        <button type="button" aria-label="Close">×</button>
        <div>
            <p>Some notification text</p>
        </div>
    </div>
</div>

h2{
font-size: 0px;
}