XUL文本框addEventListener

时间:2010-02-13 04:49:27

标签: javascript firefox xul

我正在尝试检测用户何时进入转义或在xul文本框(firefox扩展名)中输入。但以下代码似乎不起作用。非常感谢任何帮助。

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

1 个答案:

答案 0 :(得分:3)

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

<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作为捕获参数传递。通常,您希望在处理事件时处理冒泡阶段,而不是捕获阶段(即在您正在侦听的元素的更具体后代的侦听器之后)。