gpt4 book ai didi

javascript - 捕获鼠标离开 body 元素越过顶部边界

转载 作者:太空宇宙 更新时间:2023-11-04 16:28:17 26 4
gpt4 key购买 nike

我想知道当鼠标离开 body 越过顶部边界时,是否有一种方法可以捕获某种鼠标事件或其他事件?

好吧,当用户离开 body 元素并且未设置 cookie 时,我在我的站点上进行了此事件,我只向他们展示了一次此弹出窗口。但此事件会触发 body 的各个方面。

tr = 休假触发事件

我想:

            tr
+----------+
| |
no-tr| |no-tr
| |
+----------+
no-tr

但是我有

             tr
+----------+
| |
tr| |tr
| |
+----------+
tr

我有这样的东西:

$("body").one("mouseleave", initPopup)

我的问题是,是否有一种方法可以仅在用户离开 body 时触发此事件,而不是其他边界?

最佳答案

您可以使用 e.offsetY 并检查它是否小于 0。偏移量是从元素的左上角开始计算的,Y 向下增加。如果 e.offsetY 小于 0,则表示当鼠标移动到附加了事件处理程序的元素上方时触发了事件。

如果页面滚动,您需要考虑 scrollTop 值,因为 offsetY 将具有距元素顶 Angular 的偏移位置,即使它滚动到屏幕顶部之外也是如此。

由于即使鼠标从另一侧移出也会触发事件,因此您不能使用 .one() 而是可以添加一个条件来检查事件是否已被触发来自顶部的“鼠标离开”。

DEMO

triggered = false;
$("body").on("mouseleave", function (e) {
if (e.offsetY - $(window).scrollTop() < 0 && !triggered) {
triggered = true;
alert("leave");
}
});

关于javascript - 捕获鼠标离开 body 元素越过顶部边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23776195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com