JS事件里,window.onmousemove 和 document.onmousemove 有什么区别?

document.onmousemovewindow.onmousemove这两个用法有什么区别?
2025-04-17 16:43:07
推荐回答(1个)
回答1:

document 是window的属性=窗口下的页面。

就效果来说 这两个是一样的,但!尽量不使用window对象来绑定这种事件。

因为你的目的是监听鼠标在页面上移动,document代表当前的文档(页面)。所以就语义来讲要使用document。你监听的是页面事件而不是窗体事件,像改变location这种才需要用到window对象。

试验一下这段代码。结果应该是先alert 2 然后是alert 1。

window.onclick=function(){
alert(1);
}
document.onclick = function(){
alert(2);
}

也就是说document在window的上一层。最底层是window对象可以理解为dom的根对象。

如果你阻止事件冒泡 也就是如下代码,你会发现 不会出现alert 1了,也就是说事件在document层阻止了向父级元素传递。

window.onclick=function(){
alert(1);
}
document.onclick = function(e){
e.stopPropagation()
alert(2);
}

~