是否有一种简单的方法可以在 Javascript 中“转发”事件?我的最终目标是通过以下方式增强 UI 响应能力:我有一个网站,其中包含向后端数据库提交查询的单个输入文本字段。如果用户在输入字段不在焦点时按下键,我想在文档级别捕获 keypress 事件,并将其转发到输入字段。(这似乎是增强 UI 响应能力的一种相当常见的方法,例如,谷歌在他们的主要搜索网站上就这样做了。)
所以我有一个这样的文本输入字段:
<input id="query" onkeydown="f(event)">
我尝试像这样转发事件:
function handler(ev)
{
var query = document.getElementById("query");
query.dispatchEvent(ev);
}
document.addEventListener("keydown", handler, false);
现在,忽略 和 的跨浏览器问题addEventListener
,dispatchEvent
这甚至在支持这两个功能的 Firefox 上都不起作用。Javascript 解释器抛出异常: Error: uncaught exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMEventTarget.dispatchEvent]"
那么,甚至可以转发这样的事件吗?还是我需要创建一个新事件initKeyEvent
,然后将该事件分派给输入元素?