我需要通过拖动我的网站滚动条来检测鼠标移动,这可以让我检测用户的不活动状态。当我用鼠标拖动滚动条时不会触发鼠标移动事件
正在拖动滚动条时,鼠标移动事件不会触发。
不工作在IE11和Chrome浏览器,我看到Firefox 32中的mousemove事件触发,我还没有测试过其他浏览器。
示例代码:
HTML
<div class="parent" style="background-color:black;width:100px;height:500px;overflow:scroll;">
<div class="child" style="background-color:blue;width:100px;height:1000px"></div>
</div>
的Javascript:
var lastMove;
$(window).mousemove(function (e) {
lastMove = new Date();
$(".child").css("background-color", "red");
lastTimeMouseMoved = new Date().getTime();
var t=setTimeout(function(){
var currentTime = new Date().getTime();
if(currentTime - lastTimeMouseMoved > 10){
$(".child").css("background-color", "blue");
}
},10);
});
JS小提琴: https://jsfiddle.net/btdxha8k/
绑定到滚动事件的解决方案,我现在有,但我想知道是否有更多的c精益解决方案,因为我需要绑定到100多个不需要滚动事件的div,因为这看起来非常冗余,肮脏,我通常不喜欢在我的代码中使用像这样的黑客。
干杯;)
我看不到任何理由你不能删除'onscroll'处理程序自动移动开始时的滚动条,以及当自动移动停止时重新应用onscroll处理程序。您不能触发未附加的事件。因此,事件触发您的处理程序的唯一时间是用户启动滚动时。 – enhzflep
是的,你只能了解客户端区域的鼠标事件。滚动条不是窗口客户区的一部分。 – enhzflep
我看到Firefox 32中的mousemove事件触发, – Xela