【问题标题】:mouseLeave is trigged on native input autofilmouseLeave 在本机输入自动填充时触发
【发布时间】:2021-07-12 18:19:11
【问题描述】:

我需要在鼠标离开<body> 时显示我的弹出窗口,这表明退出意图。

因此,当我的客户键入他们的电子邮件时,弹出窗口只是在他们的指针位于建议上方的那一刻出现,并且不应该发生。但是发生这种情况是因为这部分不在DOM中,所以触发了鼠标离开

但是,当鼠标悬停在浏览器上的原生输入建议上时会触发此事件(我在 Firefox 和 Chrome 上测试过)。

那么,有什么想法可以跳过这个假触发器

document.body.onmouseleave = function(e) {
   console.log("mouse leave was trigged")
}

看看发生了什么

【问题讨论】:

  • 在你的输入上设置一个mouseLeave而不是你的document.body
  • @KolaCaine,我需要在鼠标离开正文时显示我的弹出窗口,显示退出意图,所以当我的客户输入他们的电子邮件时,弹出窗口只会出现在他们的确切时刻指针在建议之上。发生这种情况是因为这部分不在DOM中,所以它触发了鼠标离开。
  • @FabricioJeanSilva 怎么不在 DOM 中?你没有告诉它弹出吗?如果您有权访问下拉菜单,请将 am id 添加到其中,然后为您的函数设置一个异常,如果它在该 id 内则不会触发。
  • @krizpers 自动填充(下拉菜单)不在 DOM 中,它是为浏览器提供的,我无权获取它,(至少我不知道如何) ,所以对于body来说,就是鼠标离开事件。

标签: javascript html dom browser dom-events


【解决方案1】:

我也遇到过同样的问题,通过查看到底是什么触发了 mouseleave 事件解决了这个问题。因此,如果它不是您表单中的输入字段,您可以继续并显示您的弹出窗口

    $('body').on('mouseleave', function (e) {
        if ('INPUT' !== e.target.nodeName) {
            // do your stuff
        }
    });

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 2018-03-29
    • 2021-04-16
    • 2019-08-10
    • 2021-02-02
    • 2011-07-11
    • 2021-11-10
    • 2019-07-09
    • 1970-01-01
    相关资源
    最近更新 更多