最终任务,如果可能的话,在Javascript中查找,通过单击滚动条来检测页面滚动
Definitive quest to find if possible in Javascript to detect page scrolling by clicking on scroll bars
我有一个页面,允许用户通过我在页面中创建的按钮上下滚动。 它通过使用 jQuery 中的 animate 函数在页面中的锚点之间跳转来实现这一点。
现在我有一些功能,我只想在 Web 浏览器滚动条手动滚动页面时运行。 澄清一下,通过鼠标滚轮或通过我自己的按钮滚动应该排除在此逻辑之外。
现在我有一种方法可以检测似乎有效的鼠标滚轮特定动作(从这里开始)......
var isMouseScroll = false;
window.addEventListener('wheel',function(e){
console.log('mouse wheel');
isMouseScroll = true;
});
window.addEventListener('scroll',function(e){
if(!isMouseScroll) {
console.log('scroll');
}
isMouseScroll = false;
});
但我不知道有什么方法可以根据它是由 javascript 代码段还是由浏览器自己的滚动条激活来区分页面内容滚动。 例如,上面的代码要么通过代码滚动运行,要么手动拖动浏览器滚动条。 有没有人有更好的策略来分离这三个不同事件的检测?
你可以试试这个:
window.onscroll = function (event) {
// called when the window is scrolled.
}
如果它没有与 JavaScript 发起的滚动区分开来,您可以尝试标记变量以检测它是否是 javascript 发起的滚动并有条件地执行函数代码。
您可以检测事件已启动的位置。如果您有:
<div id="wrapper"><div id="content"></div></div>
风格 F.E. 为
#wrapper {
width: 320px;
height: 320px;
overflow: scroll;
}
#content {
width: 800px;
height: 800px;
background-color: yellow;
}
比试试这个JavaScript:
function init () {
document.getElementById("wrapper").addEventListener("mousedown", mousedown);
}
function mousedown (e) {
console.log(e.target.id);
}
window.addEventListener("load", init);
您将看到,单击内容将生成"内容",单击滚动条将生成"包装器"。
相关文章:
- 可单击滚动图像以显示文本框
- HTML5 音频单击进度条可移动到其他时间
- 使用jQuery可以禁用除滚动条之外的所有单击操作
- JavaScript-HTML<选择>单击滚动条的向下按钮时触发的onclick事件
- 单击链接后如何更改滚动条位置
- 单击滚动条时禁用Jquery功能
- EXT-JS 4.2.1 保留表单 - 面板滚动条的当前位置
- 如何检测本机滚动条的按钮单击事件
- 当用户单击滚动页面的锚链接时,是否可以禁用 .scroll 功能
- 最终任务,如果可能的话,在Javascript中查找,通过单击滚动条来检测页面滚动
- 检测浏览器滚动条上的鼠标按下/单击事件
- 点击滚动条,需要添加一些像素
- 在IE10+中单击滚动条时,如何停止事件传播
- 如果单击了滚动条,则取消mousedown事件
- 阻止单击滚动条触发.blur
- jQuery点击滚动条并没有注册为IE中的元素
- 单击滚动数组
- 当在IE中单击小部件内的滚动条时,Gridster小部件会粘在鼠标上
- 到达底部时单击滚动阻止
- CSS用于移除lightbox contact表单的滚动条