使用iOS7的iPhone上未启动JavaScript滚动事件



我对图像使用了延迟加载技术。每当视口中出现新图像时,都会设置src属性,以便加载图像。这项技术已经使用了多年,直到iOS7问世。

它在正常的页面浏览中运行良好。但当你关闭浏览器,等待一段时间,也许打开一些其他应用程序,然后回来,它就不再工作了。有时在选项卡之间切换也会破坏功能。

$(window).bind('scroll resize', function () {
    checkImages();
});

请参阅JSFiddle以获得完整的演示:http://jsfiddle.net/NZqGL/1/

我知道非活动应用程序和浏览器选项卡的JavaScript执行被暂停。但事件未绑定对我来说是新事物。

这也很难测试,因为这种行为非常不可预测。有时需要2秒钟的不活动才能崩溃,有时它只会继续工作。

在iOS 7.0.4 上测试

2014年2月12日更新:这是iOS 7.0中已确认的错误,苹果已确认将在iOS 7.1中修复。

在这里使用touchend事件是一种可以接受的解决方法。

松开手指和滚动事件之间存在延迟。当你在屏幕上快速移动手指时,松开手指后滚动将继续一段时间。

iOS还有一个错误,当页面仍在滚动时,它会阻止JavaScript的执行。因此,触摸端事件将在实际滚动后(而不是在你松开手指的那一刻)触发。因此滚动和触摸结束事件同时启动。

现在我正在监听这两个事件,并使用timer/setTimeout构造来防止代码执行两次。

最新更新