Maison  >  Article  >  interface Web  >  Comment résoudre le problème focus() dans IE7 et d’autres navigateurs ?

Comment résoudre le problème focus() dans IE7 et d’autres navigateurs ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 03:37:28455parcourir

How to Solve the focus() Issue in IE7 and Other Browsers?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn