当onclick返回false时,Google会触发点击事件

时间:2012-12-19 02:24:09

标签: javascript google-maps-api-3 google-maps-markers

我在api v3上使用Redfin的快速标记覆盖。

在这里提供他们的可点击示例,

https://code.google.com/p/multimarker/source/browse/trunk/fast-marker-overlay/maps-v3/example/clickable.html?r=22

我将一个点击监听器添加到initialize()函数中,如此,

function initialize() {
  var latlng = new google.maps.LatLng(37.4419, -122.1419);
  var myOptions = {
    zoom: 4,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = window.map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  google.maps.event.addListener(map, 'click', function() {
      alert('map click'); 
  });
}

通过在addInfoWindow调用后添加return false来修改标记模板,

var marker = new com.redfin.FastMarker(/*id*/i, latlng, ["<div class='marker' onclick='addInfoWindow(", i,"); return false;'>&nbsp;</div>"], null);

如果我在chrome中运行它,它会按预期工作。调用addInfoWindow,infowindow弹出,返回false被命中,没有其他任何事情发生。但是在firefox和IE中,返回false似乎被忽略了,并且地图点击事件被触发警告“地图点击”。

在我的真实世界应用程序中,地图点击事件会触发一个infowindow关闭事件。因此,在chrome中显示infowindow,单击地图并关闭。在firefox / IE中,单击标记,构建信息窗口,但是会触发地图点击并立即关闭。

有人能看到问题吗? Chrome是否会跳过Firefox和IE不喜欢的bug。

1 个答案:

答案 0 :(得分:1)

将其添加到onclick-attribute的开头:

try{event.stopPropagation();}catch(e){event.cancelBubble=true;}