Есть ли способ передать переменную в нажатую клавишу? - PullRequest
0 голосов
/ 05 августа 2010

Я пытаюсь отправить документ и элемент управления, в котором была нажата клавиша, для функции нажатия клавиши.

Вот мой код:

//Namespace
MyExt.BrowserOverlay = {
  init: function() {
        var appcontent = document.getElementById("appcontent");   // browser
        if(appcontent)
              appcontent.addEventListener("DOMContentLoaded", MyExt.BrowserOverlay.onPageLoad, true);
  },

  onPageLoad: function(aEvent) {
                 var doc = aEvent.originalTarget;
                 if (doc.location.href == "http://something.com"){
                     var txtBox = doc.getElementById('txtBox');
                      txtBox.addEventListener('keypress', keypressed, false); //Error Line
                                }
                 },

...

что-то вроде:


txtBox.addEventListener('keypress', keypressed(?,doc), false);

function keypressed(a,doc){
    alert(a); //a relates to keypress
    alert(doc.innerHTML);
}

Ответы [ 2 ]

0 голосов
/ 05 августа 2010

Вы можете использовать gBrowser.contentDocument, чтобы получить документ выбранной вкладки.См. статью на вкладке браузера для получения дополнительной информации.

0 голосов
/ 05 августа 2010

Самый простой способ передать переменную - это прикрепить ее к элементу, который вызовет событие, но вы можете получить доступ к документу с помощью глобальной переменной document.

Что касается прослушивателей событий, браузеры обрабатывают события по-разному:

txtBox.someVar = "foobar"; // Any variable you want to pass

if(window.addEventListener){ // Firefox, Chrome...
 txtBox.addEventListener('keypress', keypressed, false);
} else { // IE
 txtBox.attachEvent('onkeypress', keypressed);
}

function keypressed(event){

 // find event object
 var e = event || window.event;

 // find target object
 var target = e.currentTarget;
 if (e.target) target = e.target;
 else if (e.srcElement) target = e.srcElement;
 if (target.nodeType == 3) target = targ.parentNode;

 // find key code
 var code = e.charCode || e.keyCode;

 alert(String.fromCharCode(code));
 alert(target.someVar);
 alert(document.body.innerHTML);

}
...