Ich versuche, einen Listener einzustellen, der auf alle Fokusereignisse wartet. Insbesondere versuche ich zu hören, wann immer eine Eingabe oder Textbox den Fokus erhält. Per einige der Forschung, ist die weithin akzeptierte Weg, dies zu erreichen, wie folgt aus:Javascript: Global Element Fokus-Listener
document.body.onfocus = function(event) {
//Check the event.target for input/textbox
//Do something
};
Aber die document.body.onfocus scheint nicht, jemals zu schießen. Ich dachte, es sein könnte, weil das Dokument tatsächlich nicht immer den Fokus erhalten und so versuchte ich:
document.body.focus();
Um zunächst „Set“ den Fokus, aber das funktioniert auch nicht.
Irgendwelche Ideen, wie ich ein Fokusereignis auf alle Eingaben/Textfelder hören kann, ohne das Ereignis direkt auf das Element selbst zu setzen? Vanilla Javascript nur bitte, ich benutze kein Framework.
Pro die akzeptierte Antwort hier einige Arbeitscode:
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
Wohin führen Sie diesen Code? In der '
'? Oder irgendwo in der ''? Ich denke nicht, dass der 'document.body' verfügbar sein wird, wenn Code in der' 'ausgeführt wird ... nicht sicher – IanEine separate js-Datei. Nicht im HTML überhaupt. – ryandlf
Aber wo ist die JS-Datei in Ihrem HTML enthalten? – Ian