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

解决按钮内target="_blank"链接的屏幕阅读器文本显示及空白问题

解决方案:隐藏按钮内屏幕阅读器文本并消除空白

方法1:优化屏幕阅读器专属样式类(推荐)

你之前用绝对定位隐藏文本但留下空白,大概率是因为隐藏类的样式没写全。用下面这个标准的屏幕阅读器专属类,既能让辅助设备识别文本,又不会在页面上占据任何空间:

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

把你添加的荷兰语屏幕阅读器文本都套上这个类,不管是在普通链接还是按钮内,都不会产生多余空白。这个方案是WAI-ARIA推荐的隐藏策略,兼容性拉满。

方法2:针对按钮内的文本单独屏蔽

如果不想改动全局样式,直接给按钮内的屏幕阅读器文本加专属样式:

/* 匹配按钮内的屏幕阅读器文本元素 */
.button a .sr-only {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
  padding: 0;
  margin: 0;
}

通过把元素移出可视区域并压缩尺寸,彻底消除空白。

方法3:从JS根源避免添加文本

既然按钮内不需要这个荷兰语文本,不如直接在JS里判断链接的父元素,跳过按钮内的链接:

document.querySelectorAll('a[target="_blank"]').forEach(link => {
  // 检查链接是否在按钮内部
  if (!link.closest('.button')) {
    // 原来的添加tooltip和屏幕阅读器文本的逻辑
    const srSpan = document.createElement('span');
    srSpan.className = 'sr-only';
    srSpan.textContent = '(opent in nieuw venster)';
    link.appendChild(srSpan);
    
    // 你的tooltip代码...
  }
});

这个方案从源头解决问题,不用后续再处理样式,逻辑更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:05:32