该MDN文档说,你应该使用aria-label这样的:
<button aria-label="Close" onclick="myDialog.close()">X</button>
Run Code Online (Sandbox Code Playgroud)
我无法访问屏幕阅读器,但我看到Stack Overflow上的注释表明aria-label它不会替换内部内容,它只是前缀.因此,在上述情况下,它会读出"关闭X",这显然不是理想的.
这是真的?如果是这样,解决方案是什么?我猜测用一个[aria-hidden=true]元素包装内部内容是有意义的,如下所示:
<button aria-label="Close" onclick="myDialog.close()"><span aria-hidden="true">X</span></button>
Run Code Online (Sandbox Code Playgroud)
...但我很谨慎,因为我无法在真正的屏幕阅读器上测试它.
最终编辑
与其依赖博客文章或误解规范,我认为最好进行实际测试,而不是得出结论并试图记住有关 ARIA 的所有内容。
您可以测试元素的可访问名称是什么,例如,如果您使用 Google Chrome(希望其他浏览器包含可访问性测试工具):