繁体   English   中英

javascript滚动事件不一致

[英]javascript scroll event inconsistency

我试图触发滚动事件。 并发现这个简单的任务不是那么简单。

使用jQuery v1.9.1 代码

var win = $(window);
win.on("scroll", function(){
    console.log("running");
});
// trigger the scroll event
win.trigger("scroll"); //no success 

// change the scrollTop to +1
win.scrollTop(win.scrollTop()+1) //no success 

// change the scrollTop to -1
win.scrollTop(win.scrollTop()-1) //no success

// change the scrollTop to +2
win.scrollTop(win.scrollTop()+2) //fires twice

// change the scrollTop to +1.7
win.scrollTop(win.scrollTop()+1.7) //fires twice

是否存在触发滚动事件的正确可靠方法? 参见jsFiddle https://jsfiddle.net/u9dygoxf/1/

看起来scroll事件实际上仅在您手动触发scroll事件或scrollTop()函数实际滚动窗口时才触发。

这总是会警告一个值,尽管有时它是零:

var win = $(window);
win.on('scroll', function() {
  alert('scrolled: ' + win.scrollTop());
});
win.trigger('scroll');

只要页面尚未一直滚动到底部,这就会发出警报。

var win = $(window);
win.on('scroll', function() {
  alert('scrolled: ' + win.scrollTop());
});
win.scrollTop(win.scrollTop() + 1);

只要页面尚未一直滚动到顶部,这就会发出警报。

var win = $(window);
win.on('scroll', function() {
  alert('scrolled: ' + win.scrollTop());
});
win.scrollTop(win.scrollTop() - 1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM