Javascript 有没有办法将变量传递给按键功能?

Javascript 有没有办法将变量传递给按键功能?,javascript,firefox-addon,addeventlistener,dom-events,xul,Javascript,Firefox Addon,Addeventlistener,Dom Events,Xul,我正在尝试将按下该键的文档和控件发送到按键功能 这是我的密码: //Namespace MyExt.BrowserOverlay = { init: function() { var appcontent = document.getElementById("appcontent"); // browser if(appcontent) appcontent.addEventListener("DOMContentLoaded"

我正在尝试将按下该键的文档和控件发送到按键功能

这是我的密码:

//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);

传递变量的最简单方法是将其附加到将触发事件的元素,但您可以使用全局变量
document
访问文档

对于事件侦听器,浏览器处理事件的方式不同:


您可以使用
gBrowser.contentDocument
获取当前所选选项卡的文档。有关详细信息,请参见选项卡式浏览器控件上的此项。

(文档)在这种情况下不起作用,因为多个选项卡处于打开状态,并且可能具有相同的页面和元素。我不想全部修改,只想修改创建事件的那个。您能从其上的控件返回文档吗?不幸的是,全局变量可能是我唯一的解决方法。如果您有
doc
变量,请像我传递
someVar
一样传递它。doc不是可以在onPageLoad函数之外使用的全局变量,而keypressed是MyExt.browserverlay命名空间之外的私有函数。var目标=e.currentTarget//返回控件而不是文档。我正试图两者兼得。

function keypressed(a,doc){
    alert(a); //a relates to keypress
    alert(doc.innerHTML);
}
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);

}