Chrome中未触发MouseMove事件

时间:2016-07-13 13:09:34

标签: javascript jquery google-chrome javascript-events

我为mousemove添加了一个触发函数的事件监听器。出于某种原因,它不会在Chrome中触发。我可以说,因为我在测试过程中写入了控制台。 keyup eventlistener和scroll eventlistener都触发,但mousemove不在Chrome中。它在Safari和FireFox中运行良好。这是我的代码:

document.body.addEventListener("mousemove", RenewTimeoutTime);
document.body.addEventListener("keyup", RenewTimeoutTime);
document.body.addEventListener("scroll", RenewTimeoutTime);

它触发的功能:

function RenewTimeoutTime(){
    var pageName = window.location.href;
    var currentTime = new Date();
    localStorage.setItem("inTimeout", false);
    localStorage.setItem("AI_Timeout_Time", currentTime.getTime() + 270000;
    console.log(localStorage.getItem("AI_Timeout_Time"));
}

3 个答案:

答案 0 :(得分:0)

它确实有效,你只需要先检查是否先加载了DOM。

替换当前脚本
<script>
document.addEventListener('DOMContentLoaded', addListen, false);  //this is the important bit

function addListen(){
    document.body.addEventListener("keyup", RenewTimeoutTime);
    document.body.addEventListener("scroll", RenewTimeoutTime);
    document.body.addEventListener("mousemove", RenewTimeoutTime);
}

function RenewTimeoutTime(){
    var pageName = window.location.href;
    var currentTime = new Date();
    var time = currentTime.getTime();    //i replaced the time just to be neat
    localStorage.setItem("inTimeout", false);
    localStorage.setItem("AI_Timeout_Time", time + 270000);
    console.log(localStorage.getItem("AI_Timeout_Time"));
}
</script>

然后你应该好好去。直播here

答案 1 :(得分:0)

问题似乎是&#34; mousemove&#34;事件很少被触发(仅在画布点击时)当控制台打开时。如果控制台关闭,当鼠标在屏幕上移动时,它们会连续触发。

答案 2 :(得分:-1)

谢谢大家的意见。我没有发布HTML,因为我认为没有必要。网络应用程序非常复杂,所以我把它留了出来。长话短说,如果我在移动鼠标时观察控制台,鼠标移动不会记录在控制台中。单击将触发mousemove事件,滚动和键盘事件会在控制台中登录,但mousemove不会。我发现关闭控制台,移动鼠标,然后查看控制台。瞧!鼠标移动被记录下来。

我在测试期间更改了代码以便于调试。

window.addEventListener("mousemove", function(){console.log("mouse move");});
window.addEventListener("keyup", function(){console.log("keyup");});
window.addEventListener("scroll", function(){console.log("scroll");});

如果有人知道为什么我在使用开发者工具时控制台不会记录鼠标移动,请告诉我。