如何强制iOS屏幕阅读器逐字母拼读单词而非整体连读?
可行解决方案
方案1:零宽空格分隔法
这个方案对视觉展示无影响,兼容性最好。在每个字符之间插入零宽空格(​),同时搭配空格分隔的aria-label属性即可。写法示例:<span aria-label="N K E P X 1 3 5 K L">N​K​E​P​X​1​3​5​K​L</span>零宽空格不会在页面上显示任何占位,视觉效果和原字符串完全一致,iOS VoiceOver、Android TalkBack均会按单个字符拼读。
方案2:单字符独立标签法
适合动态生成的字母数字串场景,将每个字符单独用<span>包裹,给每个子span添加role="text"属性,强制读屏器单独识别每个字符。写法示例:<span aria-label="N K E P X 1 3 5 K L"> <span role="text">N</span> <span role="text">K</span> <span role="text">E</span> <span role="text">P</span> <span role="text">X</span> <span role="text">1</span> <span role="text">3</span> <span role="text">5</span> <span role="text">K</span> <span role="text">L</span> </span>这个方案不需要处理特殊字符,后续修改字符串内容时更易维护。
不要使用点号分隔的
aria-label写法,iOS VoiceOver会误将点号识别为标点,要么跳过不读要么额外读出“点”,反而影响使用体验。已废弃的speak、speak-as属性不需要再尝试,全平台读屏器均已停止支持。
内容的提问来源于stack exchange,提问作者Satya
相关产品推荐
相关产品推荐

