【发布时间】:2015-08-26 22:23:19
【问题描述】:
我正在寻找一个鼠标事件来检测鼠标何时进入窗口顶部并离开窗口顶部。我不是指网页的顶部,而是窗口的顶部。
我试图将事件附加到的页面上没有预先存在的“元素”,但我认为以编程方式将不可见的固定 html 元素添加到页面顶部可能没问题。
我喜欢使用 onmousemove 的 clientY 方法,但它会重复触发,我不想要 - 只想在进入和离开时触发。不希望我的代码必须处理多次触发。
这应该适用于任何网页——我无法控制页面上的 HTML(我以编程方式添加到页面的元素除外)。
只需要支持现代浏览器,最简单的方法,没有jquery。
这个方法很好用!但是它会阻止点击它后面的元素,这是不行的。
(function (){
var oBanana = document.createElement("div");
oBanana.style.position = "fixed"
oBanana.style.top = "0"
oBanana.style.left = "0"
oBanana.style.height= "100px"
oBanana.style.width = "100%"
oBanana.addEventListener("mouseover", function(event) {alert('in');});
oBanana.addEventListener("mouseout", function(event) {alert('out');});
document.body.appendChild(oBanana);
})();
接下来我尝试了这个,它在页面顶部插入了一个小热区。我意识到,由于我的情况,我不想将鼠标悬停在热区上——而是我希望将鼠标悬停在热区下方的所有东西上。这是我的第一次尝试,但失败了,因为 hotzone 获取了 body 事件,加上 body 事件反复触发:
(function (){
var oHotzone = document.createElement("div");
oHotzone.id = "fullscreen-hotzone"
oHotzone.style.position = "fixed"
oHotzone.style.top = "0"
oHotzone.style.left = "0"
oHotzone.style.height= "10px"
oHotzone.style.width = "100%"
oHotzone.addEventListener("mouseover", function(event) {alert('hotzone');});
document.body.appendChild(oHotzone);
document.body.style.marginTop = "10px"
document.body.addEventListener("mouseover", function(event) {alert('body');});
})();
感谢任何帮助! 谢谢!
【问题讨论】:
标签: javascript window onmouseover onmouseout