有没有办法将变量传递给keypressed函数?

时间:2010-08-04 23:59:35

标签: javascript javascript-events xul firefox-addon addeventlistener

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

这是我的代码:

//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 :(得分:0)

传递变量的最简单方法是将其附加到将触发事件的Element,但您可以使用全局变量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);

}

答案 1 :(得分:0)

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