JavaScript:要素に関係なくイベントをキャプチャする

  1. このイベントを持つページのすべてのDOM要素に対して、「フォーカス」するイベントリスナーを追加できる既存のメカニズムはありますか?そうでない場合は、どうすればよいでしょうか?

  2. DOM要素がイベントを発生させるときはいつでもconsole.log(何か)をしたいです。どうすればいいですか?

EDIT:フレームワークなしの場合):

0

4 答え

bodyまたはhtml要素にイベントをバインドできます。またはあなたのhtmlのすべてを囲む他の要素。

または、jQueryを使用する場合は、次のようなことができます

$("*").bind("focus", function(e){
    console.log("something");
})
1
追加された
フォーカスイベントをページの「すべての」要素にバインドしますか?
追加された 著者 Juri,
あなたは$(文書)をすることができましたが、OPは彼の必要性を特定していませんでした。 $( "*")の方がはるかに遅いが、要素固有のログに記録する必要があるように思える。
追加された 著者 Keith.Abramo,

このようなものは(jQueryを使って)うまくいくはずです。

$("input").focus(function(){
   console.log($(this).attr("id"));
});

Here's a live example: http://jsbin.com/ipiciz/edit#javascript,html,live

0
追加された

jQueryの:input 疑似セレクタを使用してみることもできます。

$(':input').focus(function(e){
    console.log(e);
});

これはおそらくあなたが探していると思われる入力要素にのみ付加されます。

0
追加された

DOMを介してイベントを「バブル」にすることで、リスナーをドキュメント、本文、HTMLなどの親要素(divなど)にバインドし、含まれる要素によってトリガーされるすべてのイベントをリッスンできる必要があります。

たとえば、JQueryを使用すると、次のようにすることができます。

$(document).bind('focus', function(e) { console.log(e); });

これは、どの要素が最初にイベントをトリガーしても、すべてのフォーカスイベントを記録します。

0
追加された
...バブルがキャンセルされない限り。
追加された 著者 Richard JP Le Guen,
このアサーションの問題は、特定のイベント( onfocus )がバブル(IEで)しないことです。あなたは一般化することはできません。各イベントは特別です。
追加された 著者 user1385191,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript