关于aria-label与aria-hidden的屏幕阅读器分模式读取内容的无障碍实现问询
嘿,我来帮你搞定这个无障碍需求!你想要的是Tab聚焦(焦点模式)时屏幕阅读器播报aria-label的内容,用箭头键浏览(浏览模式)时播报可见的“Privacy”文本,这个需求其实可以通过调整现有代码的无障碍属性轻松实现,具体方案如下:
调整后的代码实现
<li key="getprivacySectionView" className="nav-item dropdown header-privacy"> <button className="nav-link btn" onClick={this.trustArcPrivacyLink} aria-label="Opens Dialog Privacy" aria-haspopup="false" > <span className="dropdown-list-text">Privacy</span> </button> </li>
关键调整点说明
- 移除span标签上的
aria-hidden="true":这是核心操作!原来的aria-hidden="true"会让屏幕阅读器直接忽略这个文本节点,导致浏览模式下读不到“Privacy”。移除之后,浏览模式用箭头键导航时,屏幕阅读器会正常抓取页面上的可见文本进行播报。 - 保留按钮上的
aria-label="Opens Dialog Privacy":当用户通过Tab键聚焦到按钮(进入焦点模式)时,NVDA、VoiceOver这类主流屏幕阅读器会优先读取aria-label的内容,清晰告知用户这个按钮的操作是打开隐私对话框,完全匹配你的需求。
额外小提示
如果这个按钮并不是用来触发下拉菜单的(从代码逻辑看更像直接打开隐私对话框),建议加上aria-haspopup="false",明确告诉屏幕阅读器这个按钮没有弹出菜单,避免造成不必要的混淆。
你可以用常用的屏幕阅读器测试一下:Tab聚焦按钮时听听播报内容,再切换到浏览模式用箭头键导航,应该就能得到你想要的两种不同播报效果啦!
内容来源于stack exchange




