在我的传单地图中,单击标记会打开其弹出窗口并立即将其关闭。
地图事件的记录表明,popupopen
单击标记触发了 2 个事件,而不是仅触发一个事件,popupopen
然后popupclose
是相同的标记。
这种行为是半一致的:
- 当您只单击标记而不拖动鼠标时,就会发生打开+关闭。但是,如果您单击标记并将鼠标移动几个像素(< ~30px),则弹出窗口现在可以正常打开(并且仅
popupopen
触发一个事件,而不popupclose
跟随它)。 - Open+close 仅在 Mac 和 iPhone 上的 Safari 中可靠地发生。它有时也会在 Mac 上的 Chrome 中发生,并且当它发生时 - 它在测试会话期间是一致的。
- 这只发生在我的 2 个地图页面之一中,它们使用一个通用地图组件(一个用于移动设备,一个用于桌面)。显然这是开始调试的好地方,但是尽管调试了很多小时,我还是无法缩小它们之间的相关差异。
我调试了popupclose
事件的来源,惊讶地发现里面的_openPopup
函数src/layer/Popup.js:473
被调用了两次。此方法最终会调用this.closePopup()
第二次调用。
请注意确定它是否相关,但是查看click
地图上的事件,我在 Safari 中看到每次鼠标单击都有两个这样的事件,它们都有一个原始事件类型MouseEvent
。在 Chrome 中,当一切正常时,只有一个原始事件为PointerEvent
.
我怀疑这可能与#7255有关,但不幸的是,建议的设置tap
为 false 的解决方法没有帮助。
任何想法可能是什么原因以及如何解决它?
通过 react-leaflet 3.2.1 使用 Leaflet 1.7.1。