Ссылка на объекты событий Firefox через JavaScript - PullRequest
0 голосов
/ 21 февраля 2012

Я все еще использую Google Maps v2, и у меня возникают проблемы с получением объекта события из Firefox, когда происходит событие Google. В конечном счете, мне нужен объект события, чтобы я мог получить информацию о нажатых клавишах, когда срабатывает событие нажатия определенного оверлея. Вот некоторый код:

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 Ответ

1 голос
/ 21 февраля 2012

Отличного способа сделать это не существует.Я рекомендую привязывать событие к DOM-версии объекта polys[i] (на который обычно ссылается что-то вроде 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....
    }
  ...
});

Конечно, вы, возможно, захотите быть более детальным в своем выборе, и выпотерять обычно передаваемый широту / долготу, но вы можете получить к ним доступ в другом месте, если они вам действительно нужны (например, вы можете сохранить привязку addListener и кэшировать координаты для использования через привязки).

...