Javascript XUL文本框addEventListener

Javascript XUL文本框addEventListener,javascript,firefox,xul,Javascript,Firefox,Xul,我试图在xul文本框(firefox扩展)中检测用户何时点击escape或enter。但是下面的代码似乎不起作用。任何帮助都将不胜感激 const KEY_ENTER = 13; const KEY_ESCAPE = 27; function keyPressed(e) { switch (e.keyCode) { case KEY_ENTER: // do something break; case KEY_ESC

我试图在xul文本框(firefox扩展)中检测用户何时点击escape或enter。但是下面的代码似乎不起作用。任何帮助都将不胜感激

const KEY_ENTER = 13;
const KEY_ESCAPE = 27;

function keyPressed(e) {
   switch (e.keyCode) {
       case KEY_ENTER:
           // do something
           break;
       case KEY_ESCAPE:
           // do something
           break;
   }
}

var textbox = document.getElementById("mytextbox");
textbox.addEventListener('keypress', keyPressed, true);

是否在文本框插入文档之前运行此脚本?这个例子很适合我:

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"><![CDATA[
window.addEventListener("load", function() {
  const KEY_ENTER = 13;
  const KEY_ESCAPE = 27;

  function keyPressed(e) {
     switch (e.keyCode) {
         case KEY_ENTER:
             alert('enter');
             break;
         case KEY_ESCAPE:
             alert('escape');
             break;
         default:
             alert('default');
             break;
     }
  }

  var textbox = document.getElementById("mytextbox");
  textbox.addEventListener('keypress', keyPressed, true);
  alert('there');
}, false);
]]></script>
<textbox id="mytextbox" value="stuff"></textbox>
</window>

我也有点好奇,为什么在添加侦听器时要传递
true
作为捕获参数。通常情况下,在处理事件时,您希望在冒泡阶段进行操作,而不是在捕获阶段(即,在您正在侦听的元素的更特定子体上的侦听器被调用之后)