2012-02-20 50 views
0

我仍在使用google maps v2,並且在遇到google事件時,我無法從firefox獲取事件對象。最終,我需要事件對象,以便在特定疊加層的單擊事件觸發時檢索有關按鍵的信息。這裏是一些代碼:通過javascript引用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。傳遞給函數的變量'e'是'click'事件的緯度/經度。那麼我將如何引用firefox事件對象而不是google事件lat/long ..?

謝謝!

回答

1

沒有很好的方法來做到這一點。我建議將一個事件綁定到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.... 
    } 
    ... 
}); 

當然,你可能希望在你的選擇中更細一些,並且你失去了正常傳入的緯度/經度,但如果你真的需要它們,你可以訪問其他地方(例如,你可以保持綁定並將座標緩存到跨綁定使用)。