Maison >interface Web >tutoriel CSS >Comment résoudre le problème focus() dans IE7 et d'autres navigateurs ?
Problème IE Focus()
Dans certains navigateurs, tels que IE7, la méthode focus() sur les éléments d'entrée peut ne pas fonctionner comme prévu . Cela peut empêcher le curseur d'être positionné à l'intérieur du champ de saisie.
Solution pour IE
Pour résoudre ce problème dans IE, une fonction setTimeout peut être utilisée pour retarder l’opération de mise au point. Cela oblige IE à accuser réception du changement et à positionner correctement le curseur. Voici un exemple :
setTimeout(function() { document.getElementById('myInput').focus(); }, 10);
Solution alternative
Si la solution setTimeout ne fonctionne pas dans Opera, une autre approche peut être adoptée. En sélectionnant l'élément par ID, en utilisant la méthode cloneNode() et en le remplaçant par l'élément cloné, le focus sera défini.
Solution étendue pour les pages à chargement lent
Dans les cas où l'élément d'entrée n'est pas disponible en raison d'un chargement lent des pages ou d'un rendu tardif, une solution plus robuste est requise. L'extrait de code suivant tente à nouveau l'opération de focus après un bref intervalle jusqu'à ce que l'élément devienne disponible :
setTimeout( function( ) { var el = document.getElementById( "myInput" ) ; ( el != null ) ? el.focus( ) : setTimeout( arguments.callee , 10 ) ; } , 10 ) ;
Cette approche continue de tenter de définir le focus jusqu'à ce que l'élément soit présent dans le DOM.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!