通过JavaScript引用Firefox事件对象



我仍在使用谷歌地图v2,当谷歌事件触发时,我很难从Firefox获取事件对象。最终,我需要事件对象,这样我就可以在特定覆盖的单击事件触发时检索有关按键的信息。这里有一些代码:

GEvent.addListener(polys[i], "click", function(e) {
    var evtObj = window.event? event : e;
    for (var i=0; i<polys.length; i++) {
        if ( this == polys[i] ) {
            if (evtObj.ctrlKey) {
                map.closeInfoWindow();
                clickCounty(labels[i]);
            }
            other stuff to happen....
        }
});

这在IE和Chrome中运行良好。传递到函数中的变量eclick事件的lat/long。那么,我该如何引用Firefox事件对象而不是Google事件lat/long..呢。。?

没有什么好方法可以做到这一点。我建议将事件绑定到polys[i]对象的DOM版本(通常在类似polys[i].Zk的对象中引用),而不是使用GEvent.addListener。使用渲染对象并在加载贴图后附加到渲染对象可能比在polys[i].Zk中查找更容易。

例如,如果你的对象是img标记,你可以这样做(使用jQuery作为简写,尽管我知道你还没有用jQuery标记):

$('#map-box').on('click', 'img', function(evtObj) {
  for (var i=0; i<polys.length; i++) {
    if ( this == polys[i].Zk ) {
      if (evtObj.ctrlKey) {
        map.closeInfoWindow();
        clickCounty(labels[i]);
      }
      other stuff to happen....
    }
  ...
});

当然,您可能希望在选择中更精细一点,并且会丢失通常传递的lat/lon,但如果您真的需要,您可以在其他地方访问这些lat/lon(例如,您可以保留addListener绑定并缓存要在绑定之间使用的坐标)。

最新更新