4

keypressbody 要素に割り当てられた Web ページにハンドラーがあります。Webページのどこでもアクティブにしたいのです。とか、そう思いました。テキスト入力フォームのkeypressイベントも body ハンドラーをアクティブにします。これは理にかなっていますが、私は望んでいません。

keypress理想的には、ハンドラーを body 要素に割り当てたままにして、何らかの方法で入力フォームだけを除外したいと考えています。入力レベルでイベントを停止し、それが本体に伝播するのを防ぐ方法はありますか? (それとも、HTML DOM イベントの正しい見方でしょうか?)

4

1 に答える 1

9

キープレスハンドラーでイベントをトリガーした要素を確認し、入力要素を除外する方が簡単です。

document.onkeypress = function(evt) {
    evt = evt || window.event;
    var target = evt.target || evt.srcElement;
    if ( !/INPUT|TEXTAREA|SELECT|BUTTON/.test(target.nodeName) ) {
        // Do stuff
    }
};
于 2009-10-25T16:53:27.510 に答える