gpt4 book ai didi

javascript - 为什么 Leaflet 不在 mouseout 事件中提供正确的 relatedTarget 元素?

转载 作者:行者123 更新时间:2023-12-05 06:38:34 26 4
gpt4 key购买 nike

当用户将鼠标悬停在标记上时,我会打开一个弹出窗口。目前,当用户将鼠标悬停在弹出窗口上时,弹出窗口会关闭(例如,用户无法选择弹出窗口内的文本,因为它会关闭)。我正在尝试解决此问题,并且找到了一个很好的方法,如您在此处所见:
http://jsfiddle.net/sowelie/3JbNY/

尽管该解决方案有效,但该 fiddle 中使用的 Leaflet 版本非常旧,因此我将 Leaflet 版本更新为 1.1.0 版,这在 90% 的情况下都会破坏解决方案。

这里有两个 fiddle ,第一个与旧 Leaflet 的工作解决方案相同,但我添加了一个 console.log。第二个也有 console.log 但它使用 Leaflet 1.1.0。
旧的:http://jsfiddle.net/3JbNY/106/
新的:http://jsfiddle.net/3JbNY/105/

请注意,在 100% 的情况下,旧解决方案总是记录正确的 relatedTarget 元素,即弹出窗口(当然,当您从标记退出到弹出窗口时。如果您退出 map 的标记,它不会是弹出窗口)。

但是,在使用新版 Leaflet 的相同解决方案中,90% 的时间 relatedTarget 都不是弹出窗口,即使您退出到弹出窗口也是如此每时每刻。这个百分比是任意的,我实际上并没有计算它,我的意思是如果你尝试的时间足够长,最终新的解决方案会将弹出窗口记录为 relatedTarget 但这种情况非常罕见。

我想知道这里的正确行为是什么。在我看来,它应该像旧解决方案一样工作:给我退出的正确元素,这样我就可以检查我是否退出到弹出窗口,如果是这种情况,则不关闭它。为什么会发生变化?
是否有任何解决方法来获得正确的 relatedTarget 而无需依赖 Leaflet 团队对此进行修补?或者可能是一个不依赖于 relatedTarget 的全新解决方案?

感谢您的帮助!

编辑:标题说 mouseover 但我的意思是 mouseout

最佳答案

找到了罪魁祸首。一些 Leaflet 类有一个名为 pointer-events 的 CSS 属性设置为 none,查看它的作用 here .因此,弹出窗口中的事件被忽略了。所以我通过简单地将属性覆盖为 auto 值来解决这个问题(在我的例子中它是 leaflet-tooltip 类,但它们有一个类似于弹出窗口的类,称为 leaflet-popup-tip-container).

在 Leaflet 的 GitHub 上查看此问题以获取更多信息:https://github.com/Leaflet/Leaflet/issues/5720 .

关于javascript - 为什么 Leaflet 不在 mouseout 事件中提供正确的 relatedTarget 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45755984/

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