我正在构建一个聊天应用程序,并且我试图确保无论何时用户按下某个键,他们按下的键最终都会输入到特定元素中(iframe ui.rteIFrame 中的可编辑 HTML 文档 ui.rte1Content,到准确无误)。无论页面上的哪个元素当前具有焦点,都应该发生这种情况。我只关心支持 Firefox 和 Chrome。
到目前为止,我已经在 window.onkeydown 事件上注册了一个处理程序:
function captureKeyDown(e) {
console.log("Capturing: " + e.keyCode);
// We ignore certain keys such as page up, as well as keys pressed with
// alt or ctrl, except for a few select combos like ctrl+b
if(!ignoreKeys.contains(e.keyCode) && !e.altKey &&
(!e.ctrlKey || (e.ctrlKey && validCtrlKeys.contains(e.keyCode)))) {
ui.rte1Content.focus(); // Chrome prefers this.
if(!rteHasFocus) {
ui.rteIFrame.focus(); // Firefox prefers this
}
//alert("A commented out alert");
}
}
这在 Firefox 中完美运行: rteIFrame 获得焦点,被按下的键出现,然后我们继续。然而,在 Chrome (23.0.1271.95) 中,当 rte1Content 及时正确地获得焦点以显示 NEXT 字母时,第一个触发事件的首字母消失在以太中。
对于它的价值,如果我取消注释警报声明,这封信在 Chrome 中显示得很好。我不知道为什么会这样。
有人对我如何让它工作有任何建议吗?