javascript - 检测正在滚动的元素
问题描述
我的页面上有一些 div 设置为溢出:滚动,如下所示:
如何检测当前正在滚动哪个元素或者是否将滚动应用于正文?Event.target 仅返回应用滚动时鼠标当前悬停的元素,而不是实际目标。
window.onscroll = function(e){
console.log(e.target);
}
body{
background: white;
}
div{
height: 50px;
overflow: scroll;
margin: 25px;
background: black;
color: white;
}
<div>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
</div>
<div>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
</div>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
提前致谢!
解决方案
更改事件绑定以div
直接绑定元素。如果div
没有任何溢出,它将无法滚动,因此不会触发事件。
// Find all the scrollable divs and loop through the collection of them
document.querySelectorAll("div").forEach(function(div){
// Bind each to a scroll event listener
div.addEventListener("scroll", function(){
console.log(this.id);
});
});
body{
background: white;
}
div{
height: 50px;
overflow: scroll;
margin: 25px;
background: black;
color: white;
}
<div id="something">
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
</div>
<div>Not enough here for scroll event</div>
<div id="something else">
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
</div>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
Scroll<br>
推荐阅读
- azure - Office365:使用“AADSTS9002313”invalid_grant execption 刷新访问令牌结果
- javascript - Node Express 渲染 Dom 元素
- python - 如何将自定义用户模型添加到管理面板的用户部分 - django 3.1.1
- azure-devops-rest-api - 如何通过 AzureDevOps REST API 仅获取最新版本的包
- python - 是否可以从 url 编码帖子数据中停止 Python 请求库?
- excel - 使用列表框调用用户窗体时出现运行时错误
- coq - 从向量转换的列表等于从转换其类型的向量转换的列表
- nlp - OpenAI API 和 GPT-3,不清楚如何访问或设置学习/开发?
- android - 在 C 中运行 Android SU 命令
- ios - 我们可以使用单个证书发布多少个应用程序以及如何同时更新所有应用程序