gpt4 book ai didi

javascript - 鼠标点击触发鼠标离开

转载 作者:行者123 更新时间:2023-12-03 08:13:59 24 4
gpt4 key购买 nike

我有一个绝对定位的 div,我试图跟踪鼠标何时移过它,以及鼠标何时离开。不幸的是,单击框中的文本偶尔会触发 mouseleave 事件。

演示:js fiddle

我怎样才能防止这种情况?

JS

let tooltip = document.createElement('div');
tooltip.innerHTML = 'HELLO WORLD';
tooltip.setAttribute('class', 'tooltip');
tooltip.style.display = 'none';

tooltip.onclick = evt => {
console.log('click')
evt.stopPropagation();
}
tooltip.ondblclick = evt => {
console.log('double click')
evt.stopPropagation();
}

tooltip.onmouseenter = () => {
console.log('tooltip mouse OVER');
}

tooltip.onmouseleave = () => {
console.log('tooltip mouse OUT')
}

tooltip.style.left = '290px';
tooltip.style.top = '50px';
tooltip.style.display = 'block';
document.body.appendChild(tooltip);

HTML
<div style="width: 300px; height: 300px; background-color: lightblue">

</div>

CSS
.tooltip {
position: absolute;
/*display: none;*/
left: 100;
top: 100;
min-width: 80px;
height: auto;
background: none repeat scroll 0 0 #ffffff;
border: 1px solid #6F257F;
padding: 14px;
text-align: center;
}

最佳答案

这似乎是一个错误(我可以在 Chrome 中通过单击鼠标向下和鼠标向上快速发生的单击来重现它)。

我建议通过检查事件触发时鼠标是否仍在元素上方来解决此问题:

tooltip.onmouseleave = (e) => {
if (tooltip === document.elementFromPoint(e.clientX, e.clientY)) {
console.log('false positive');
return;
}
console.log('tooltip mouse OUT')
}

缺点是当浏览器窗口失去焦点时,这也被认为是误报。如果这对您来说是个问题,请查看 this answer .

关于javascript - 鼠标点击触发鼠标离开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45266854/

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