J'ai un formulaire HTML avec beaucoup d'entrées. Je suis intéressant dans la situation où j'ai concentré l'entrée, après que je défile la page et la mise au point est foiré.IE | Comment empêcher la saisie-focus manquant sur la page de défilement?
Répondre
Problème: un élément focalisé perd le focus lorsque la barre de défilement IE est utilisée.
Vous aurez besoin de:
- identifier l'élément qui perd le focus
- identifier lorsque le document a défilée
- appliquer à nouveau la mise au point
Vous pouvez identifier le élément qui perd son focus via l'événement blur
. Ajoutez un gestionnaire d'événement approprié à chaque élément où vous souhaitez que le focus soit mémorisé. Lorsque le gestionnaire d'événements blur
s'exécute, pour un élément d'entrée donné, vous devez stocker, éventuellement dans la variable globale, un identificateur pour l'élément d'entrée. La façon dont vous faites cela dépend de la façon dont vous choisissez d'identifier l'élément. Le id
de l'élément serait idéal.
Vous pouvez savoir quand un document est défilé dans le gestionnaire d'événements scroll
de l'objet window
. Voir https://developer.mozilla.org/en/DOM/window.onscroll.
Vous pouvez savoir quand un document a fini de défiler en comparant les valeurs avant et après de scrollHeight. Voir https://developer.mozilla.org/en/DOM/element.scrollHeight.
générale:
- ajouter
blur
gestionnaires d'événements à vos éléments d'entrée - sur le flou, notez l'élément qui perd le focus et la scrollHeight actuelle
- pendant le défilement, comparer scrollHeights pour déterminer si le défilement est arrêté
- lors du défilement est arrêté, réappliquer la mise au point
Vous pouvez attendre une courte période entre le défilement arrêté et la réapplication de la mise au point. L'utilisateur peut défiler un peu, s'arrêter, défiler, s'arrêter. Vous ne voulez pas que votre script provoque un comportement de saut de focus fou.
Plutôt que de capturer 'blur' sur chaque élément' input', puisqu'il s'agit d'un problème spécifique à IE, voici une solution spécifique à IE: capturez l'événement ['focusout'] (http://msdn.microsoft.com/en-us/library/ms536936 (v = vs.85) .aspx) sur un conteneur des éléments (tel comme le formulaire). Contrairement à 'flou ',' focusout' bulles sur IE, de sorte que vous pouvez non seulement minimiser le nombre de gestionnaires que vous avez besoin de brancher, mais jouez bien avec des formes où vous ajoutez/supprimez des éléments à la volée. –
Je pense que vous devez vous poser la question si le navigateur que vous utilisez (et sa version) sont à jour avec les normes d'aujourd'hui ... Par exemple, FF, Safari, Chrome (ou Google Chrome) et mes autres navigateurs «next-gen» ne perdent pas leur focus lors de l'utilisation d'une barre de défilement.
Si vous utilisez, disons, IE4, que d'arrêter d'essayer d'améliorer ses fonctionnalités manquantes. Cependant, je ne sais pas lequel et la version que vous utilisez donc si c'est le dernier IE. Vous pourriez simplement essayer comme Jon Cram déclare.
Vous êtes celui qui devrait savoir si le pourcentage d'utilisateurs du navigateur ne disposant pas des fonctionnalités que vous voulez est assez grand pour vous permettre d'implémenter des changements dans ces navigateurs. Si vous le faites, s'il vous plaît ne vous occupez que de ces fonctionnalités pour les navigateurs qui leur manquent ou vous supprimerez le contrôle des navigateurs qui ont une implémentation suffisante des fonctions «next-gen».
:) Je suis d'accord avec vous, mais le problème n'est toujours pas résolu. Merci – omoto
- 1. IE propriété droite hors de la page - défilement vertical
- 2. Empêcher Yahoo OpenID de rediriger la page
- 3. Comment empêcher IE d'afficher l'URL dans IFrame lors de la modification de la fenêtre parente
- 4. Empêcher l'auto-défilement dans RichTextBox
- 5. Problème avec la zone de défilement horizontal dans IE?
- 6. Conserver la page Web du défilement vers le haut sur le formulaire. Soumettre
- 7. PHP: empêcher l'accès direct à la page
- 8. Comment implémenter la fonctionnalité de la page de défilement automatique si l'élément se trouve sous la page en javascript?
- 9. Favicon manquant sur certaines pages
- 10. Contrôle IE WebBrowser: empêcher les URL d'accéder à l'historique de l'URL de la barre d'adresse IE
- 11. Visual Studio manquant "créer un site Web" sur la page de démarrage
- 12. Comment empêcher l'ajout du même événement dans la page Asp.net?
- 13. Afficher l'image sur la vue de défilement
- 14. jQuery manquant; avant la déclaration
- 15. Comment se débarrasser de la barre de défilement verticale d'une zone de texte dans IE?
- 16. Boîte de taille fixe avec barres de défilement sur la page HTML?
- 17. Défilement HTML 5 Canevas dans IE
- 18. empêcher l'exécution de JS lorsque la page n'est pas chargée
- 19. Comment conserver la position de défilement en utilisant la page maquette?
- 20. Comment éviter l'entartrage dans la barre de défilement flex
- 21. Comment empêcher le défilement automatique d'une zone de texte enrichie lors de la mise en évidence de la syntaxe?
- 22. Comment déboguer le problème de la barre de défilement horizontale?
- 23. ReturnUrl et conserve la position de défilement?
- 24. jQuery événement de défilement iframe (IE)
- 25. JQGrid Comment puis-je supprimer la barre de défilement horizontale ennuyeuse lorsque autowidth = true? (Dans IE)
- 26. désactiver la barre de défilement sur le div
- 27. Comment dimensionner mon contrôle Silverlight 2 pour qu'il corresponde à la page (la barre de défilement est affichée par défaut)
- 28. La barre de défilement verticale ne s'affiche pas quand elle devrait dans IE
- 29. Définition de la barre de défilement sur un JScrollPane
- 30. Rafraîchir la position de défilement de UITextView sur l'iPhone
Dans Internet Explorer lorsque vous cliquez sur la barre de défilement en laissant la cible, dans Mozila et d'autres navigateurs, tout va bien – omoto