我使用fllowing代码作为onscrollStop
事件执行:
let timeoutId = null;
$(window).on('scroll', function () {
if(timeoutId)clearTimeout(timeoutId);
timeoutId = setTimeout(function () {
console.log("ok!");
}, 200);
});
问题是,当我在Chrome 58.0.3029.110(64位)上测试时," ok!"日志变得越来越慢(尝试滚动更多次,至少30次)。
即。有时它会在滚动结束时立即显示(200ms),但有时它会在滚动结束后显示很长时间(最长为1秒)。
然后我在Microsoft Edge,IE和Firefox上测试它,它运行得很好。
我注意到的另一件事是,这样的代码需要大量的CPU,当我在Microsoft Edge,IE和Firefox中测试时,我的CPU运行最多40%。但Chrome不会出现这种情况(如果你不能重现这一点,请尝试用更复杂的功能替换日志功能。)
所以我认为,Chrome的安全策略是阻止代码以预期的速度运行。
很明显,问题是代码太无效了。
是否有更有效的方法来实施scrollstop
事件?