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

VoiceOver盲文显示器聚焦时,视频currentTime动态更新失效问题求助

解决方案:iOS Safari盲文显示器实时更新视频时间

针对iOS16 Safari中,盲文显示器聚焦时视频currentTime无法实时更新的问题,可通过以下两种方案解决:

方案一:结合aria-atomic与aria-live优化现有结构

你之前仅使用aria-live="polite"未生效,核心原因是缺少aria-atomic="true"——它会强制VoiceOver(包括盲文显示器)读取整个live区域的完整内容,而非仅变化部分。调整后的HTML结构如下:

<div class="p-2 flex-grow-1 align-self-center" role="text" aria-live="polite" aria-atomic="true">
  <time datetime="PT0M0S" data-video-container-target="currentTime">0:00</time>
  <span> / </span>
  <time data-video-container-target="duration">0:00</time>
</div>

关键说明:

  • aria-atomic="true":确保每次内容更新时,盲文显示器重新读取整个时间行的内容,而非仅更新的currentTime部分
  • 保留role="text":维持盲文显示为单行的需求
  • JavaScript更新时,务必同时更新<time>的文本内容和datetime属性,保证语义完整性,这有助于VoiceOver识别内容变化

方案二:替换role="text"为动态aria-label(备选)

如果方案一仍不生效,可改用aria-label动态拼接时间字符串,让盲文直接读取拼接后的文本:

<div class="p-2 flex-grow-1 align-self-center" aria-live="polite" aria-atomic="true" id="time-container">
  <time datetime="PT0M0S" data-video-container-target="currentTime">0:00</time>
  <span> / </span>
  <time data-video-container-target="duration">0:00</time>
</div>

在JavaScript更新时间时,同步更新容器的aria-label:

// 假设currentTimeText和durationText是获取到的时间字符串
const timeContainer = document.getElementById('time-container');
timeContainer.setAttribute('aria-label', `${currentTimeText} / ${durationText}`);

关键说明:

  • 移除role="text",通过aria-label直接定义盲文读取的单行文本
  • aria-live和aria-atomic确保盲文实时更新拼接后的内容
  • 视觉上仍保留原有结构,不影响普通用户体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:30:06