すべてのフォーカス イベントをリッスンするリスナーを設定しようとしています。特に、入力またはテキストボックスがフォーカスされるたびにリッスンしようとしています。いくつかの調査によると、これを達成するための広く受け入れられている方法は次のようなものです。
document.body.onfocus = function(event) {
//Check the event.target for input/textbox
//Do something
};
しかし、document.body.onfocus は起動していないようです。ドキュメントが実際にフォーカスを受け取らないためかもしれないと思ったので、試しました:
document.body.focus();
最初にフォーカスを「設定」しますが、これも機能しません。
実際に要素自体にイベントを直接設定せずに、すべての入力/テキストボックスでフォーカスイベントをリッスンする方法についてのアイデアはありますか? バニラ JavaScript のみでお願いします。私はフレームワークを使用していません。
受け入れられた回答ごとに、ここにいくつかの実用的なコードがあります:
var focusHandler = function(event) {
var type = event.target.nodeName.toLowerCase();
if(type == 'input' || type == 'textarea') {
//Do something
}
};
document.body.addEventListener('focus', focusHandler, true); //Non-IE
document.body.onfocusin = focusHandler; //IE