слушатель кнопки расширения firefox - PullRequest
0 голосов
/ 03 марта 2011

В моем расширении, где overlay.js содержит следующие события:

var sto = 
{
   onLoad: function() {...},
   onMenuItemCommand: function(e) {...},
   onToolbarButtonCommand: function(e) {...},
};

window.addEventListener("load", function () { sto.onLoad(); }, false);

Мне нужно, чтобы слушатель срабатывал при каждом нажатии кнопки на загруженной странице. Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 04 марта 2011

Я нашел решение - было довольно легко.Хорошо, вот источник:

https://developer.mozilla.org/en/Code_snippets/Interaction_between_privileged_and_non-privileged_pages

и модифицированный код:

var sto = 
{
   onLoad: function() {...},
   onMenuItemCommand: function(e) {...},
   onMouseClick: function(e) {...},
   onToolbarButtonCommand: function(e) {...},
};

window.addEventListener("load", function () { sto.onLoad(); }, false);
document.addEventListener("click", function(e) { sto.onMouseClick(e); }, false, true);
0 голосов
/ 03 марта 2011

Ну, я не уверен, что это то, чего вы хотите, но вы можете попытаться выполнить делегирование события для всего документа:

var document_mouseup_lst    = EventListener.createEventListener();
doc.addEventListener("mouseup", document_mouseup_lst, false);
document_mouseup_lst.addEvent("mouseup", function click(e, callback, object){
    var element = e.target;

    if(element.tagName.toLowerCase() === 'button') {
        if (e.which == 1) { // left click
            // do whatever u want
        } else if (e.which == 2) { // middle click
            // do whatever u want
        }
    }

return false;
});

Кстати, чтобы создать EventListener (объект EventListener, который получилметод createEventlistener) Я использовал эту страницу Ajaxian >> Альтернативный способ добавитьEventListener

...