我目前$(window).bind('scroll', foo);用来监视$(窗口).scrollTop()并做一些东西来创建一个视差效果.
在所有桌面浏览器中,为用户滚动的每个像素调用foo(),一切都很好,花花公子.在iOS上的Safari中,滚动事件仅在滚动完成后触发.
我添加$(window).scrollTop()了以确保在iOS中滑动期间调用该函数,它让我更进一步.当用户释放手指时,页面继续滚动,但事件停止触发.
有任何想法吗?
我注意到最新iOS(iOS 6)的这种奇怪行为.如果为任何内部具有setTimeout的触摸事件调用函数,则永远不会触发setTimeout内的部分.
仅当存在诸如滚动和放大/缩小的"系统动画"时才会发生这种情况.
例如:
(我使用jquery进行测试,但纯js也是如此)
在任何iOS 6设备上使用safari打开该页面并放大或缩小.永远不会调用警报.
如果在任何iOS 5设备上进行测试,这将正常工作!似乎在这些动画期间,操作系统会重置setTimeout或setInterval.这是预期的行为还是错误?
谢谢
看起来如果我正在滚动window,window.setInterval则在滚动发生时或之后不会附加/触发.还有其他人看过同样的问题吗?
我的意思是...
这里有几个问题:
反正是否有滚动保持iOS在页面上冻结javascript?
当您在另一个标签中或切换应用时,iOS会冻结javascript吗?
iOS上还有其他主要的JavaScript限制吗?
ios ×4
javascript ×4
dom-events ×2
dom ×1
freeze ×1
html5 ×1
ios6 ×1
jquery ×1
parallax ×1
safari ×1
setinterval ×1