Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iOS上的自动聚焦自动显示选择器_Javascript_Ios_Picker_Autofocus_Wcag - Fatal编程技术网

Javascript iOS上的自动聚焦自动显示选择器

Javascript iOS上的自动聚焦自动显示选择器,javascript,ios,picker,autofocus,wcag,Javascript,Ios,Picker,Autofocus,Wcag,我正在开发一个web应用程序,它的特点是在整个应用程序使用过程中动态显示和隐藏多个区域 当应用程序正在努力实现时,我已经准备好了逻辑,可以使任何激活区域的第一个可选输入在激活区域时接收焦点。这允许视障用户将注意力应用到应用程序的适当区域 这在Windows、Android和MacOS上运行得非常好。但是,当使用iOS Safari时,接收到焦点时,选择器会自动激活。这是不希望出现的行为,因为每次激活这些区域时,都会显示选择器对话框 有没有办法让iOS Safari在元素接收到焦点时不显示选择器对

我正在开发一个web应用程序,它的特点是在整个应用程序使用过程中动态显示和隐藏多个区域

当应用程序正在努力实现时,我已经准备好了逻辑,可以使任何激活区域的第一个可选输入在激活区域时接收焦点。这允许视障用户将注意力应用到应用程序的适当区域

这在Windows、Android和MacOS上运行得非常好。但是,当使用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
用于父元素是
或其他不可标记元素的情况

这不是一个理想的解决方案,但它对我有效