Javascript XUL文本框addEventListener
我试图在xul文本框(firefox扩展)中检测用户何时点击escape或enter。但是下面的代码似乎不起作用。任何帮助都将不胜感激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
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
作为捕获参数。通常情况下,在处理事件时,您希望在冒泡阶段进行操作,而不是在捕获阶段(即,在您正在侦听的元素的更特定子体上的侦听器被调用之后)