js:如何在执行javascript时允许页面滚动?

js:如何在执行javascript时允许页面滚动?,javascript,html,ios,Javascript,Html,Ios,我一直认为iOS上的MobileSafari浏览器在页面元素进行动态“本机”滚动时基本上暂停了所有javascript执行 然而我注意到这显然不是真的。我在浏览opticsplanet.com上的产品页面时首先注意到了这一点,然后我终于能够在swipe.js主页的演示中重现类似的行为。这些页面是普通的垂直滚动页面,但图像库允许您平滑地左右滑动,图片会缩放并捕捉 令我惊讶的是,它很有可能使用常规页面滚动,同时仍然让图像滑动小部件跟踪触摸的水平位置 如果JS执行被挂起,这是不可能的,所以这条规则有一

我一直认为iOS上的MobileSafari浏览器在页面元素进行动态“本机”滚动时基本上暂停了所有javascript执行

然而我注意到这显然不是真的。我在浏览opticsplanet.com上的产品页面时首先注意到了这一点,然后我终于能够在swipe.js主页的演示中重现类似的行为。这些页面是普通的垂直滚动页面,但图像库允许您平滑地左右滑动,图片会缩放并捕捉

令我惊讶的是,它很有可能使用常规页面滚动,同时仍然让图像滑动小部件跟踪触摸的水平位置

如果JS执行被挂起,这是不可能的,所以这条规则有一个例外(如果确实是一条规则,JS执行在滚动期间被挂起),或者有其他一些令人惊讶的黑客正在使用,因为水平滚动具有自定义捕捉行为。当页面继续垂直滚动时,小部件同时为照片的快照设置动画。使用水平滚动宽溢出滚动div之类的东西根本无法获得这种友好的用户体验

它真的必须是一些正在运行的脚本,因为我检查了网站,它显然正在设置
webkit转换
样式

顺便说一句,我在仍然运行iOS 6.1的设备上注意到了这一点,所以iOS 7并不是什么新鲜事

所以问题是,我在这里遗漏的谜题是什么?不幸的是,Safari inspector缺少了Chrome中的
属性更改中断
银弹

为什么我的webkit动画在使用本机滚动时挂起/冻结


我现在可以想出另外一种解释(这一解释很有希望),那就是
requestAnimationFrame
。然而,我只对CSS动画(挂起)进行了大量实验,我非常确定旧式的
setTimeout()
循环也会挂起。但如果英国皇家空军执行了
rAF
回调,我会很高兴。但是,我真的不知道他们如何跟踪触摸(不是触摸事件处理程序)。

嘿,史蒂文-滚动页面时,你可以与哪些元素交互?我发现了相反的结果(在iOS 6.0.1和iOS 7.1上测试),一旦我开始滚动/平移页面,横幅就停止了动画。关于rAF,我实际上做了一些测试,看看是否有一个解决JS执行被暂停的方法(从计时器、rAF,甚至webworkers…),发现没有一个有效。我真希望这个问题有一个答案:\r抱歉,我现在不能调查这个问题。问题是浏览器多年来一直在快速地改变他们的行为。。。