BFi*_*Fil 13 javascript events input touch ios
我在iOS上遇到了一个问题,我为它做了一个小提琴:
如果事件监听器被添加到文档中以用于任何触摸事件(touchstart/touchmove/touchend),如下所示:
function onTouch( e ){};
document.addEventListener( 'touchstart', onTouch, false );
Run Code Online (Sandbox Code Playgroud)
这导致输入字段在iOS上具有以下行为:
我在iPad和iPhone(模拟器和实际设备)上在iOS 5,5.1和6上遇到并测试了这个问题.
唯一的修复似乎是删除事件监听器以恢复输入字段的正确行为(或实际上从不添加监听器):
document.removeEventListener( 'touchstart', onTouch);
Run Code Online (Sandbox Code Playgroud)
我还注意到,如果页面上有多个iframe,并且其中一个iframe将监听器添加到其文档中,它也会破坏其他iframe的输入字段.
小提琴在我的Android手机上表现正常.
任何想法为什么会发生这种情况?或者如何为触摸事件提供全局自定义事件处理程序,而不会破坏iOS上的输入?
小智 16
这是一个解决方法.将焦点设置到窗口,然后在超时时返回节点:
function fixIpadTouch(node){
node.ontouchend=function(e){
if(document.activeElement===node){
window.focus();
setTimeout(function(){
node.focus();
},0);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5179 次 |
| 最近记录: |