我正在尝试检测用户何时进入转义或在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);
答案 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
作为捕获参数传递。通常,您希望在处理事件时处理冒泡阶段,而不是捕获阶段(即在您正在侦听的元素的更具体后代的侦听器之后)。