単にscrollイベントにbindしただけでは、iOSではスクロール終了後に1度発火するだけなので注意。
また、Androidだと頻度と処理の内容によってはスクロールがカクついたりでいろいろと工夫が必要。
以上のことをふまえ、iOSではtouchmoveにbindし、Androidはscrollイベントで直接実行するのではなく、timerを併用して実行頻度を抑える。
var pageScrollEventQueue = [];
function executeOnPageScroll(f) {
if (isIOS()) {
$(window).bind('touchmove', f);
} else {
pageScrollEventQueue.push(f);
}
}
(function() {
var scrollTop = $(window).scrollTop();
var executeOnPageScrollEvent = function() {
var current = $(window).scrollTop();
if (scrollTop != current) {
//console.log('executeOnPageScrollEvent');
for (var i = 0; i < pageScrollEventQueue.length; i++) {
pageScrollEventQueue[i]();
}
}
setTimeout(executeOnPageScrollEvent, 250);
scrollTop = current;
}
setTimeout(executeOnPageScrollEvent, 250);
})();