You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制屏幕阅读器不读取特定文本?JAWS与ARIA场景处理

解决JAWS同时读取aria-label与内部文本的问题

当然有办法搞定!你碰到的这个场景挺常见的——就是要让视觉显示和屏幕阅读器读取的内容分开,下面给你两种靠谱的解决方案,优先推荐第一种:

方法一:给内部span添加aria-hidden="true"(推荐)

这是最语义化、最直接的处理方式。给你不想被JAWS读取的<span>加上aria-hidden="true"属性,就能明确告诉屏幕阅读器:"这个元素的内容不用管它",同时完全不影响视觉上的显示效果。

示例代码:

<div aria-label="Read this">
  <span aria-hidden="true">do not read this</span>
</div>

原理很简单:aria-hidden属性专门用来标记元素及其子内容对辅助技术(比如JAWS)不可见,完美匹配你只需要外层aria-label被读取的需求。

方法二:用CSS视觉隐藏内部文本(备选方案)

如果因为某些限制没法用aria-hidden,也可以通过CSS把内部文本移出视口范围,让屏幕阅读器抓取不到它(不过这种方法原本是用来隐藏仅给屏幕阅读器看的内容,反过来用也能达到效果):

先定义一个CSS类:

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

然后把这个类应用到<span>上:

<div aria-label="Read this">
  <span class="visually-hidden">do not read this</span>
</div>

不过相比第一种方法,这种是从视觉层面做隐藏,而aria-hidden是直接针对辅助技术的语义化标记,所以优先选第一种更稳妥。

小提醒

要确保你的aria-label内容足够清晰准确哦,毕竟视觉用户看到的是内部文本,屏幕阅读器用户听到的是aria-label,如果两者差异很大,最好是业务场景确实需要这种设计,避免给不同用户造成认知混乱。

内容的提问来源于stack exchange,提问作者Rajasekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:58:34