Javascriptでイベントを「転送」する簡単な方法はありますか?ここでの私の最終的な目的は、次の方法でUIの応答性を強化することです。バックエンドデータベースにクエリを送信する単一の入力テキストフィールドを持つWebサイトがあります。入力フィールドにフォーカスがないときにユーザーがキーを押した場合、ドキュメントレベルでキープレスイベントをキャプチャして、入力フィールドに転送したいと思います。(これは、UIの応答性を高めるためのかなり一般的な方法のようです。たとえば、Googleはメインの検索サイトでこれを行います。)
したがって、次のようなテキスト入力フィールドがあります。
<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
から、そのイベントを入力要素にディスパッチする必要がありますか?