Problème de champ de saisie FOCUS dans IE et Opera
Problème :
Le code ci-dessous échoue pour focaliser le champ de saisie cloné dans Internet Explorer 7 :
function change() { var input = document.getElementById('pas'); var input2 = input.cloneNode(false); input2.type = 'password'; input.parentNode.replaceChild(input2, input); input2.focus(); }
Solution pour IE :
Internet Explorer est notoirement « paresseux » lorsqu'il s'agit de focaliser les éléments. Pour résoudre ce problème, vous pouvez utiliser une fonction setTimeout :
setTimeout(function() { document.getElementById('myInput').focus(); }, 10);
Solution pour Opera :
Dans Opera, vous pouvez rencontrer des problèmes pour définir le focus sur les éléments créés dynamiquement ou apparaître après le chargement de la page. Reportez-vous aux ressources suivantes pour connaître les solutions potentielles :
Solution améliorée :
Pour gérer les cas où l'élément peut ne pas être disponible immédiatement, vous pouvez utiliser l'extrait suivant :
setTimeout( function( ) { var el = document.getElementById( "myInput" ) ; ( el != null ) ? el.focus( ) : setTimeout( arguments.callee , 10 ) ; } , 10 ) ;
Ce code tente de focaliser l'élément toutes les 10 millisecondes jusqu'à ce qu'il devienne disponible, résolvant ainsi les problèmes potentiels de chargement lent ou d'apparition retardée de l'élément.
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!