2010-02-13 55 views
2

我試圖檢測用戶在xul文本框(Firefox擴展)中點擊轉義或輸入時。但是下面的代碼似乎不起作用。任何援助將不勝感激。XUL文本框addEventListener

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

回答

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作爲拍攝參數添加偵聽器時。一般來說,你想在處理事件時處於冒泡階段,而不是捕獲階段(即在你正在調用的元素的更具體的後代的偵聽器被調用之後)。