IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Bloquer tous les focus


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2013
    Messages : 7
    Par défaut Bloquer tous les focus
    Bonjour tout le monde,

    Voici la situation :

    Je travaille sur un projet sous Drupal 7 en custom. Le bug d'affichage Internet Explorer 10 provient d'un formulaire. Quand je clique sur un champs OU rentre juste une lettre dans un des champs, la page du formulaire remonte directement. Le focus se perd ou plutôt se bloque sur la première partie du formulaire et je dois retrouver le champs, entrer une nouvelle lettre, la page remonte etc etc. Ce qui est fort pénible pour un utilisateur lambda auquel le site est destiné.

    Le formulaire est couplé à un JS custom qui semble correcte (après quelques corrections), au script JS "jquery.html5form.js" et "jquery.inputmask.bundle.min.js". J'ai regardé ces deux fichiers JS, créés par des devs JS.

    J'ai un deuxième formulaire utilisant un JS custom différent, mais couplé également avec "jquery.html5form.js" et "jquery.inputmask.bundle.min.js". Ce deuxième formulaire ne crée pas de soucis par contre. J'ai comparé les deux JS et rien ne m'a choqué.

    Ma question est : est-il possible de bloquer tous les focus d'une page ? une fonction, une technique ou je ne sais quoi ?

    J'ai essayé d'utiliser la fonction blur(); sur plusieurs champs mais rien ne change.

    Le site fonctionne correctement sur Firefox, Chrome, Opera.

    Je vous remercie d'avance pour vos réponses / aides.

    Cordialement,

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Si la page remonte, c'est qu'il y a forcément un code JavaScript derrière qui déclenche le phénomène en callback d'un évènement keydown/keyup. Il y a plusieurs situations où la page remonte ainsi, généralement c'est quand on modifie le hash de l'URL et que ce hash ne pointe vers aucune ancre dans la page. Par défaut le navigateur remonte tout en haut de la page lorsqu'aucune ancre n'est trouvée.

    Bloquer tous les focus, quoi que cela veuille dire, ne résoudra pas le problème de fond. Sur l'inspecteur de développement Chrome (pas sûr pour les autres), on peut lister les listeners d'évènements pour chaque type d'évènement et élément. Regarde quels listeners sont enregistrés sur les évènements clavier de ton input, ça te donnera le script responsable.

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut Peut être un bug déjà connu par les services Microsoft?
    Au regarde du contexte je ne pourrais pas faire grand chose au même titre que leur correction qui sera effective sur la machine du correcteur et pas de l'internaute sous IE 10 qui lui n'aura pas fait cette manipulation.

    http://answers.microsoft.com/en-us/i...4-0a99a44aed5a

    Bref je sais pas si ce cas de figure te concerne, mais tu pourra suivre les tickets a ce sujet.

    Bonne chance.

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Ce problème n'a strictement rien à voir Il n'a jamais parlé d'un changement d'application

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2013
    Messages : 7
    Par défaut
    @SylvainPV : L'histoire des hashs, effectivement, je vais me renseigner à ce sujet, tout comme pour les listenners, mais j'avais déjà fait une analyse d'eux pour vérifier ce qu'il se passe et j'avais aucun résultat valable avec l'outil de dev de Firefox. Par contre, sous IE, j'ai testé, après avoir cliquer sur un élément, dans la console de dev la commande suivante : console.log($(':focus')); et j'ai remarqué que beaucoup d'élément avait le focus alors qu'il n'y a rien qui doit leur donner cet attribut.

    Je vais continuer les investigations et s'il y a encore des réponses ou des idées, n'hésitez pas ^^.

  6. #6
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Perso je pense à un problème d'encre où équivalent

    lorsque on active un lien vers une ancre qui n'existe pas on se retrouve en haut de page

    J'ai comme l'impression que tu a un javascript qui mets le focus sur un élément HTML qui n'existe pas
    (raison pour laquelle je préfère manipuler des objet plutôt que des id)
    A+JYT

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2013
    Messages : 7
    Par défaut
    La seule partie où il y a des ancres, c'est pour passer d'une étape à une autre, étant donné que le formulaire est divisé en 4 étapes. Selon l'étape où on se trouve, les autres sont "cachées". Elles deviennent accessibles quand on valide entièrement une étape etc etc.
    Vu que c'est une reprise d'un projet, leur système pour passer d'une étape à une autre reste obscure à la vue du code. Et bon, si je mets en commentaire la partie concernant le changement des étapes, tout le formulaire devient inutilisable.
    J'vais me renseigner sur les ancres, mais je trouve ça assez incroyable que ça pourrait être ça. Quand je fais "console.log($(':focus')); après une action sur le formulaire sur IE10, j'ai pas mal d'éléments qui prennent le focus sans une raison particulière. Là encore, j'arrive pas à l'expliquer malgré une analyse complète du code. D'un côté, j'suis dev débutant donc bon.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2013
    Messages : 7
    Par défaut
    Bonjour tout le monde,

    Je reviens vers vous pour cloturer ce sujet. J'ai trouvé l'origine du problème. Les développeurs, à la base du projet, avaient décidé d'appeler la fonction "formulaire();" à chaque action de l'utilisateur. J'ai mis du temps à trouver le souci. En tout cas, merci pour vos réponses et votre aide.

    Bonne journée.

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bloquer tous les evenements en attendant une reponse
    Par andrebernard dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/03/2012, 12h18
  2. Bloquer tous les événements d'un calque div
    Par SpIrIt505050 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/11/2009, 09h46
  3. Réponses: 2
    Dernier message: 09/04/2009, 11h33
  4. Bloquer tous les champs et en libérer un seul
    Par 4rocky4 dans le forum VBA Access
    Réponses: 4
    Dernier message: 08/02/2008, 10h54
  5. Bloquer tous les ports sauf 80,21,22,844
    Par biglittlekiss dans le forum Sécurité
    Réponses: 7
    Dernier message: 12/12/2006, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo