iOS VoiceOver支持以滑动手势(即两个手指以Z形拖动)关闭本机弹出窗口(警报,选择下拉列表等)。但是,对于通过javascript显示的下拉菜单(如下拉菜单),似乎没有一种很好的方法。
我知道擦洗手势(在启用VoiceOver的情况下)实际上单击了“后退”按钮,因此,我可以通过在弹出窗口打开时调用history.pushState()
并侦听“ popstate”事件来拦截该手势。但是,这似乎打开了一大堆蠕虫。例如,由于打开弹出窗口会调整历史记录堆栈,因此关闭弹出窗口会使前进按钮变为启用状态。另外,即使我在“ popstate”监听器中调用preventDefault()
,它也会将焦点发送到后退按钮。
另一种方法是以编程方式检测擦洗手势,然后(尝试)取消实质上单击后退按钮的默认操作。但这似乎也需要很多工作。
那么,有没有一种好的方法可以检测并拦截javascript中的擦洗手势?