iOS 7全屏web应用程序延迟解雇javascript touchend

时间:2013-09-21 16:34:08

标签: javascript ios ios7 iphone-standalone-web-app

我有一个独立的Web应用程序,以前在iOS 6上运行良好。

对于iOS 7,我注意到在手指滑动后触发javascript touchend事件会有很长的延迟(几秒钟)。行为不一致,有时第一次滑动会立即生成事件,只会延迟以下事件。

这是一个已知问题和/或有解决方法吗?

感谢。

3 个答案:

答案 0 :(得分:1)

我正在使用我正在开发的HTML5游戏遇到同样的问题。有时候,touchend似乎会立刻开火,而其他时候会在它被解雇之前延迟几秒钟。

我偶然发现this post提醒我用于将javascript块推入队列以供稍后处理的setTimeout 0技巧。我在touchend事件处理程序中做了一些“繁重的”(一些DOM操作),这似乎破坏了它的触发。

我使用setTimeout将代码包装在我的touchend处理程序中,这消除了延迟:

$(document).on('touchend', function (e) {
    setTimeout(function(){
        //do stuff here...
    }, 0);
});

答案 1 :(得分:0)

iOS 7和HTML5上的Safari:问题,变更和新API:http://www.mobilexweb.com/blog/safari-ios7-html5-problems-apis-review

答案 2 :(得分:0)

iOS 7.1似乎解决了这个问题; touchend事件正常启动(即使没有零超时)