Heim > Artikel > Web-Frontend > Wie löst man das focus()-Problem in IE7 und anderen Browsern?
IE Focus()-Problem
In einigen Browsern, wie z. B. IE7, funktioniert die focus()-Methode für Eingabeelemente möglicherweise nicht wie erwartet . Dies kann dazu führen, dass der Cursor nicht innerhalb des Eingabefelds positioniert wird.
Lösung für IE
Um dieses Problem im IE zu beheben, kann eine setTimeout-Funktion zur Verzögerung verwendet werden der Fokusvorgang. Dadurch wird der IE gezwungen, die Änderung zu bestätigen und den Cursor korrekt zu positionieren. Hier ist ein Beispiel:
setTimeout(function() { document.getElementById('myInput').focus(); }, 10);
Alternative Lösung
Wenn die setTimeout-Lösung in Opera nicht funktioniert, kann ein anderer Ansatz gewählt werden. Durch Auswahl des Elements nach ID, Verwendung der Methode cloneNode() und Ersetzen durch das geklonte Element wird der Fokus festgelegt.
Erweiterte Lösung für langsam ladende Seiten
In Fällen, in denen das Eingabeelement aufgrund langsam ladender Seiten oder spätem Rendern nicht verfügbar ist, ist eine robustere Lösung erforderlich. Der folgende Codeausschnitt wiederholt den Fokusvorgang nach einer kurzen Zeitspanne, bis das Element verfügbar wird:
setTimeout( function( ) { var el = document.getElementById( "myInput" ) ; ( el != null ) ? el.focus( ) : setTimeout( arguments.callee , 10 ) ; } , 10 ) ;
Dieser Ansatz versucht weiterhin, den Fokus zu setzen, bis das Element im DOM vorhanden ist.
Das obige ist der detaillierte Inhalt vonWie löst man das focus()-Problem in IE7 und anderen Browsern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!