JAWS 2023输入按键时重复播报问题求助
解决JAWS 2023文本框输入重复播报问题
问题现象
使用JAWS 2023时,在特定文本框输入字符会出现重复播报,例如输入字母"P"时,会被播报为"P username P"或"P password P",问题仅出现在以下两个输入框:
<input id="textboxUsername" autocapitalize="none" autocorrect="off" autocomplete="on" type="text" placeholder="Username" maxlength="30" tabindex="0" role="textbox" aria-level="1"> <input id="textboxPassword" autocapitalize="none" autocorrect="off" autocomplete="on" type="text" placeholder="Password" maxlength="30" tabindex="0" role="textbox" aria-level="1">
问题原因
- 冗余语义属性冲突:原生
<input type="text">本身已经具备textbox的语义角色,额外添加role="textbox"会导致JAWS重复识别控件类型。 - 错误的ARIA属性:
aria-level="1"用于定义标题层级(如<h1>),将其应用在文本框上会干扰JAWS的播报逻辑,引发重复读取。 - 模糊的自动完成配置:
autocomplete="on"未明确指定输入框用途,JAWS可能同时读取placeholder和自动完成提示信息,造成重复播报。
修复方案
- 移除不必要的
role="textbox"和aria-level="1"属性,保留原生控件的语义。 - 明确设置
autocomplete属性值,匹配输入框的实际用途:- 用户名框设置
autocomplete="username" - 密码框设置
autocomplete="current-password"
- 用户名框设置
修改后的代码示例
<input id="textboxUsername" autocapitalize="none" autocorrect="off" autocomplete="username" type="text" placeholder="Username" maxlength="30" tabindex="0"> <input id="textboxPassword" autocapitalize="none" autocorrect="off" autocomplete="current-password" type="text" placeholder="Password" maxlength="30" tabindex="0">
测试验证:修改后重新在JAWS 2023中输入字符,重复播报的情况应该会消失,JAWS会正常播报输入的字符及控件用途。
内容的提问来源于stack exchange,提问作者Myst
相关产品推荐
相关产品推荐

