Heim > Artikel > Web-Frontend > Wie kann man Eingabeelemente in verschiedenen Browsern zuverlässig in den Fokus rücken?
IE- und Focus-Ereignisprobleme
Das focus()-Ereignis kann in Internet Explorer unzuverlässig sein. Beim Versuch, den Cursor-Fokus mit der folgenden Funktion auf ein Eingabeelement zu setzen:
function change() { var input = document.getElementById('pas'); var input2 = input.cloneNode(false); input2.type = 'password'; input.parentNode.replaceChild(input2, input); input2.focus(); }
IE7 reagiert nicht auf den Aufruf von focus() und lässt den Cursor außerhalb des Eingabeelements. Um dieses Problem im IE zu beheben, verwenden Sie eine setTimeout-Funktion:
setTimeout(function() { document.getElementById('myInput').focus(); }, 10);
Opera Woes
Die Verwendung dieser Lösung führt jedoch zu einem neuen Dilemma in Opera. Um dieses Problem zu beheben, konsultieren Sie Ressourcen wie „So legen Sie den Fokus im erforderlichen Index auf das Textfeld für Opera fest.“
Universelle Lösung
Um die Kompatibilität mit allen Browsern sicherzustellen, integrieren Sie ein Code-Snippet, das das Szenario behandelt, in dem das Eingabeelement nicht sofort verfügbar ist:
setTimeout( function( ) { var el = document.getElementById( "myInput" ) ; ( el != null ) ? el.focus( ) : setTimeout( arguments.callee , 10 ) ; } , 10 ) ;
Dieses Snippet versucht alle 10 Millisekunden erneut, den Fokus zu fokussieren bis das Element verfügbar wird, wodurch das Problem sowohl für langsam ladende Seiten als auch für die verzögerte Elementverfügbarkeit behoben wird.
Das obige ist der detaillierte Inhalt vonWie kann man Eingabeelemente in verschiedenen Browsern zuverlässig in den Fokus rücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!