Javascript 如何停止Google Maps closeclick事件传播
我有一个Javascript 如何停止Google Maps closeclick事件传播,javascript,google-maps,infowindow,Javascript,Google Maps,Infowindow,我有一个点击事件绑定在一个包含谷歌地图的元素上。当用户关闭地图上的信息窗口并单击十字时,单击事件将被触发并传播到整个DOM。我想停止此事件传播,因此信息窗口将关闭,但我的容器上未引发click事件 Google Maps API提供了一个closeclick事件,该事件在信息窗口关闭时引发,但是无法访问该事件(它不作为参数显示): 由于我的容器绑定到click上,我甚至不确定closeclick.stopPropagation()是否有效。因此,我正在寻找一种方法,当用户单击十字时,访问Goog
点击
事件绑定在一个包含谷歌地图的元素上。当用户关闭地图上的信息窗口并单击十字时,单击事件将被触发并传播到整个DOM。我想停止此事件传播,因此信息窗口将关闭,但我的容器上未引发click事件
Google Maps API提供了一个closeclick
事件,该事件在信息窗口关闭时引发,但是无法访问该事件(它不作为参数显示):
由于我的容器绑定到click
上,我甚至不确定closeclick.stopPropagation()
是否有效。因此,我正在寻找一种方法,当用户单击十字时,访问GoogleMap抛出的click事件。当然,GoogleMaps的html太混乱了,我无法访问跨DOM元素来添加eventListener(到处都是div,没有任何类)
有什么建议吗
编辑:作为一种解决方法,我通过修改自己的代码和测试容器捕获事件时事件的来源来修复此问题:
container.addEventListener('click', function(ev) {
if (ev.target.src == 'https://maps.gstatic.com/mapfiles/api-3/images/mapcnt6.png') {
return false;
}
// the code I want to execute only when the click event doesn't come from the InfoWindow
});
这不起作用吗?您可以使用以下代码帮助我:
var aListener = google.maps.event.addListener(map, 'click', function(event) {
// Try to prevent event propagation to the map
event.stop();
event.cancelBubble = true;
if (event.stopPropagation) {
event.stopPropagation();
}
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
});
不,如上所述,API函数没有将事件作为参数。因此,这将抛出一个
e未定义的错误。
google.maps.event.addListener(infowindow, "closeclick", function(e) {
e.stopPropagation();
});
var aListener = google.maps.event.addListener(map, 'click', function(event) {
// Try to prevent event propagation to the map
event.stop();
event.cancelBubble = true;
if (event.stopPropagation) {
event.stopPropagation();
}
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
});