Javascript iOS上的自动聚焦自动显示选择器
我正在开发一个web应用程序,它的特点是在整个应用程序使用过程中动态显示和隐藏多个区域 当应用程序正在努力实现时,我已经准备好了逻辑,可以使任何激活区域的第一个可选输入在激活区域时接收焦点。这允许视障用户将注意力应用到应用程序的适当区域 这在Windows、Android和MacOS上运行得非常好。但是,当使用iOS Safari时,Javascript iOS上的自动聚焦自动显示选择器,javascript,ios,picker,autofocus,wcag,Javascript,Ios,Picker,Autofocus,Wcag,我正在开发一个web应用程序,它的特点是在整个应用程序使用过程中动态显示和隐藏多个区域 当应用程序正在努力实现时,我已经准备好了逻辑,可以使任何激活区域的第一个可选输入在激活区域时接收焦点。这允许视障用户将注意力应用到应用程序的适当区域 这在Windows、Android和MacOS上运行得非常好。但是,当使用iOS Safari时,接收到焦点时,选择器会自动激活。这是不希望出现的行为,因为每次激活这些区域时,都会显示选择器对话框 有没有办法让iOS Safari在元素接收到焦点时不显示选择器对
接收到焦点时,选择器会自动激活。这是不希望出现的行为,因为每次激活这些区域时,都会显示选择器对话框
有没有办法让iOS Safari在元素接收到焦点时不显示选择器对话框?我很确定简短的答案是否定的。 除非您为应用程序制作自己的iOS包装,并控制集合视图的流程,否则操作系统将接管并显示所选字段的正确控制类型
您可以通过更改字段的type属性来破解它,但这有点脏。表单中的自动聚焦元素可能会适得其反。 例如,见 如果您希望将视力受损的注意力转移到某个区域,您应该使用标准方法,例如使用
aria live
属性
也就是说,您可以尝试将焦点放在元素的标签上。然后,残疾用户将能够通过常用快捷键/击键选择相关元素 我最终解决了这个问题,每当使用iOS时,我都会将焦点分配给父元素。由于HTML是如何构造的,所以我的应用程序可以这样做 我研究了如何使用
,但这不适用于模态禁用背景的情况。理想行为的焦点指向模态,然后用户在确认或关闭模态之前无法离开模态
我用于解决此问题的代码如下所示:
if (navigator.userAgent.search(/iPad|iPhone|iPod/g) === -1) {
focus(currentControl);
} else {
currentControl.parentElement.setAttribute("tabindex", "-1");
focus(currentControl.parentElement);
currentControl.parentElement.removeAttribute("tabindex");
}
setAttribute
用于父元素是
或其他不可标记元素的情况
这不是一个理想的解决方案,但它对我有效