相关疑难解决方法(0)

检测滚动事件是否由用户创建

是否可以判断滚动事件是由浏览器还是由用户完成的?具体地,当使用后退按钮时,浏览器可以跳转到最后已知的滚动位置.如果我绑定滚动事件,我如何判断这是由用户还是浏览器引起的?

$(document).scroll( function(){ 
    //who did this?!
});
Run Code Online (Sandbox Code Playgroud)

我看到三种导致浏览器滚动的情况.

  1. 用户执行某些操作.例如,使用鼠标滚轮,箭头键,向上/向下翻页键,主页/结束键.
  2. 浏览器自动滚动.例如,在浏览器中使用后退按钮时,它将自动跳转到上一个已知的滚动位置.
  3. Javascript滚动.例如,element.scrollTo(x,y).

javascript jquery

71
推荐指数
3
解决办法
3万
查看次数

如何区分手动滚动(通过鼠标滚轮/滚动条)与Javascript/jQuery滚动?

更新:

这是一个证明问题的jsbin示例.

更新2:
这是固定版本归功于fudgey.


基本上,我有以下javascript将窗口滚动到页面上的锚点:

 // get anchors with href's that start with "#"
 $("a[href^=#]").live("click", function(){
     var target = $($(this).attr("href"));
     // if the target exists: scroll to it...
     if(target[0]){
         // If the page isn't long enough to scroll to the target's position
         // we want to scroll as much as we can. This part prevents a sudden 
         // stop when window.scrollTop reaches its maximum.
         var y = Math.min(target.offset().top, $(document).height() - $(window).height());
         // also, don't …
Run Code Online (Sandbox Code Playgroud)

javascript jquery scroll scrollbar mousewheel

25
推荐指数
1
解决办法
1万
查看次数

标签 统计

javascript ×2

jquery ×2

mousewheel ×1

scroll ×1

scrollbar ×1