6

私の拡張機能は、ロードされた任意のWebサイトで入力されたすべての入力を通過します。

私がしていることは、すべてのオンキーダウンを考慮し、何らかの価値がある場合はそれを操作することです。

私のバックグラウンドjsファイルには次のものが含まれています。

document.onkeydown = returnKey; 

function returnKey(evt) {   
    var evt  = (evt) ? evt : ((event) ? event : null);
    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);  
    if ( node.value == 'fi' ) { evt.srcElement.value = "??"; }  
}

私の問題は、innerHTMLWebページにonkeydown関数がすでに含まれているWebサイトがある場合です。

例えば:

Facebookのホームページから取得:

<textarea class="uiTextareaAutogrow input" onkeydown="Bootloader.loadComponents([&quot;control-textarea&quot;], function() { TextAreaControl.getInstance(this) }.bind(this));

の切り替えnode.value == 'fi'?? 彼らのonkeydown="Bootloader...は私の前に実行されるため、実行されていませんdocument.onkeydown

オンキーダウンが実行される前に関数を実行するにはどうすればよいですか?

4

1 に答える 1

9

の代わりにdocument.onkeydown = returnKey;

document.addEventListener('keydown', returnKey, true);

この行の最も重要な部分は、3番目の引数です。このパラメーターの値がである場合、イベントリスナーはキャプチャフェーズでトリガーされます。これは、またはtrueを使用して防ぐことはできません。event.preventDefault();event.stopPropagation();

于 2012-12-14T14:37:06.140 に答える