Answers:
我的第一个答案显然是行不通的,因为我现在正面临着同样的问题。这是一种新方法:
Leaflet支持一个名为的事件contextmenu
。由于单张事件文档中找到这里。
当用户在地图上按下鼠标右键时触发,阻止默认浏览器上下文菜单显示,如果此事件上有侦听器。
所以从理论上讲
marker.on('contextmenu', function(e) {
this.openPopup();
});
应该工作正常。但是显然实现落后于文档。到目前为止(传单0.4.5),该contextmenu
事件显然还不受标记支持,尽管它在折线对象上工作得很好。
似乎正在准备在不久的将来启用此功能(请参见此处和此处的讨论)。因此,我想我们只能希望Leaflet能够快速开展这项工作并在下一个版本中启用该事件...
编辑:
忽略我说的有关等待实施的内容。如果您下载最新的开发主分支并自己构建传单,则将获得contextmenu
对标记事件的全面支持。快乐的编码。
防止IE和所有其他浏览器中的默认行为:
event.returnValue = false;
if (event.preventDefault) event.preventDefault();
试试这个内部函数:
L.DomEvent.stopPropagation(event);
它应该可以解决问题。
PS我从未在任何文档中找到它,但看到它在补丁中使用。使用风险自负。;)
编辑:我也发现了这个内部功能
L.DomEvent.preventDefault(event);
这似乎与event.preventDefault()
jQuery 非常相似。
L.DomEvent.preventDefault(event);
。从我所看到的(查看Leaflet.js源代码)来看,这应该与preventDefault()
jQuery提供的内容非常相似...试试吧!:)
我偶然遇到了一个停止事件的解决方案。
例如,如果创建了这样map.on("click", onMapClick);
的事件- ,则可以使用以下代码停止该事件-map.off("click", onMapClick);