Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果可能的话,通过点击滚动条,在Javascript中找到检测页面滚动的最终任务_Javascript_Jquery_Scroll - Fatal编程技术网

如果可能的话,通过点击滚动条,在Javascript中找到检测页面滚动的最终任务

如果可能的话,通过点击滚动条,在Javascript中找到检测页面滚动的最终任务,javascript,jquery,scroll,Javascript,Jquery,Scroll,我有一个页面,用户可以通过我在页面中创建的按钮上下滚动。它通过使用jQuery中的animate函数在页面中的定位点之间跳跃来实现这一点 现在,我有了一些功能,我只想在web浏览器滚动条手动滚动页面时运行这些功能。为了澄清,通过鼠标滚轮或我自己的按钮滚动应该被排除在这个逻辑之外 现在我有了一种检测鼠标滚轮特定动作的方法,它似乎可以工作() 但我不知道如何区分页面内容滚动,这取决于它是由javascript代码还是由浏览器自己的滚动条激活的。例如,上面的代码在通过代码滚动或手动拖动浏览器滚动条的情

我有一个页面,用户可以通过我在页面中创建的按钮上下滚动。它通过使用jQuery中的animate函数在页面中的定位点之间跳跃来实现这一点

现在,我有了一些功能,我只想在web浏览器滚动条手动滚动页面时运行这些功能。为了澄清,通过鼠标滚轮或我自己的按钮滚动应该被排除在这个逻辑之外

现在我有了一种检测鼠标滚轮特定动作的方法,它似乎可以工作()

但我不知道如何区分页面内容滚动,这取决于它是由javascript代码还是由浏览器自己的滚动条激活的。例如,上面的代码在通过代码滚动或手动拖动浏览器滚动条的情况下运行。有谁有更好的策略来区分这三种不同事件的检测吗?

您可以尝试以下方法:

window.onscroll = function (event) {
  // called when the window is scrolled.
}

如果它与JavaScript启动的滚动没有区别,您可以尝试在变量上标记,以检测它是否是JavaScript启动的滚动,并有条件地执行函数代码。

您可以检测事件已启动的位置。如果您有:

<div id="wrapper"><div id="content"></div></div>
然后尝试以下javascript:

function init () {
  document.getElementById("wrapper").addEventListener("mousedown", mousedown);
}

function mousedown (e) {
  console.log(e.target.id);
}

window.addEventListener("load", init);
您将看到,单击内容将生成“内容”,单击滚动条将生成“包装器”

#wrapper {
  width: 320px;
  height: 320px;
  overflow: scroll;
}
#content {
  width: 800px;
  height: 800px;
  background-color: yellow;
}
function init () {
  document.getElementById("wrapper").addEventListener("mousedown", mousedown);
}

function mousedown (e) {
  console.log(e.target.id);
}

window.addEventListener("load", init);