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 :

Bug Firefox sur focus()


Sujet :

JavaScript

  1. #1
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut Bug Firefox sur focus()
    Bonjour !
    J'ai un petit bug sur firefox quand j'utilise la fonction focus (ou select).
    En fait, quand je clique sur un bouton, j'affiche une div au milieu de la page (un peu comme une popup en gros, sauf que ça reste dans la page) avec un champ texte dedans auquel je donne le focus. Sous IE ça marche bien, mais sous FF le curseur (la petite barre qui clignote permettant de savoir où on écrit) ne s'affiche pas alors que le champ a bien le focus vu que si je tape quelquechose ça s'écrit bien dans le champ texte...
    Je voudrais donc savoir comment y remédier ?

    Ma fonction javascript permettant de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function afficherDialog() {
       dialog.init(); // créé la dialog, la positionne au milieu de la page et initialise son contenu
       dialog.afficher(); // rend visible la dialog
       var champTexte = dialog.getContenu('champTexte');
       champTexte.onkeydown = toucheEntree; // valide le formulaire si on appui sur entrée
       champTexte.focus();
       champTexte.select();
    };
    Merci d'avance !

  2. #2
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Personne n'a une idée ni même une petite piste ?
    Vous faut-il plus de précision ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 31
    Points : 34
    Points
    34
    Par défaut
    Quelle version de FF utilises-tu?

    Pour ma part, je n'ai pas ce problème et je suis sous la 1.5.0.9.

    Je viens de tenter avec un exemple bidon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <html>
       <head>
       </head>
       <body>
          <div id="moo" style="visibility: hidden; display: none; position: absolute; width: 200px; height: 200px; border: 1px solid black; left: 300px;">
             <input id="foo" type="text" />
          </div>
     
          <input type="button" onclick="doMoo();" />
     
          <script type="text/javascript">
          function doMoo() { 
             document.getElementById('moo').style.visibility = 'visible';
             document.getElementById('moo').style.display = 'block';
             document.getElementById('foo').focus();
          }
          </script>
       </body>
    </html>
    Sinon, c'est peut-être un bug d'affichage de layers qui n'a rien à voir avec Javascript...

  4. #4
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Quelle version de FF utilises-tu?
    2.0.0.1, mais il semble me rappeler que ça me le faisait déjà sur la 1.5
    Je viens de tenter avec un exemple bidon:
    J'ai essayé aussi ton exemple et ça marche bien chez moi aussi...

    J'avais le même problème (curseur qui disparait) quand je faisais ça par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
       <head>
       </head>
       <body>
          <input id="foo" type="text" onblur="document.getElementById('bar').focus();" />
          <input id="bar" type="text" />
       </body>
    </html>
    En fait j'avais pas remarqué, mais même si je ne donne pas le focus au champs, quand clique sur le champ pour lui donner le focus ben ça fait pareil...

    C'est bizarre quand même...

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 474
    Points : 36 602
    Points
    36 602
    Par défaut
    Bonjour,
    tu n'aurais pas dans la même page un script en tache de fond (style onmousemove) ?
    Ca peut perturber le clignotement du curseur ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  6. #6
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    onmousemove non j'en ai pas.
    Par contre j'ai pleins de onload, onresize, onclick, onmouseover/out et onkeyup/down. Normalement c'est tout...

    Je déplace mon édit du post d'avant au cas ou :
    Est-ce que le bug pourrais venir du fait que mon bouton, qui affiche la div et donne le focus au champs texte, se trouve dans une frame qui elle même se trouve dans une iframe (oui je sais c'est compliqué mais c'est plutôt une application que je développe) alors que la div se trouve dans la page globale ?

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 474
    Points : 36 602
    Points
    36 602
    Par défaut
    Citation Envoyé par ptitskippy
    Est-ce que le bug pourrais venir du fait que mon bouton, qui affiche la div et donne le focus au champs texte, se trouve dans une frame qui elle même se trouve dans une iframe (oui je sais c'est compliqué mais c'est plutôt une application que je développe) alors que la div se trouve dans la page globale ?
    Ben dans les scripts de l'iframe qui accède à la page parente, il faut préfixer les commandes par "parent." ou "top." (NS)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parent.document.getElementById(...
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  8. #8
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Bah bien sur t'inquiète pas sinon ça m'aurait fait une erreur javascript et pas un bug d'affichage !
    D'ailleurs la fonction dialog.getContenu sert justement de raccourci pour faire ce que tu dit.

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 474
    Points : 36 602
    Points
    36 602
    Par défaut
    Heu ... pourquoi l'edit précédent, alors ??
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  10. #10
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Ben je sais pas trop... peut être que le fait d'une frame demande à sa frame parente d'afficher un champs texte cause un bug sous FF...
    J'essaie d'envisager toutes les possibilités parce que je commence à ne plus avoir d'idées de la où vient le problème...

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 474
    Points : 36 602
    Points
    36 602
    Par défaut
    dialog.getContenu gère aussi les parent.parent.... ?
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  12. #12
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Pas exactement. En fait la définition de l'objet dialog se trouve dans un script de la page globale (car elle peut appelée par une autre frame que celle qui nous interesse).
    Et au début de la fonction que j'ai donné, je fait (je l'avais enlevé pour pas compliqué l'exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var dialog = parent.parent.dialog;
    du coup la fonction getContenu retourne un simple document.get... car elle se trouve dans la page globale.
    C'est à peu près clair mes explications... ?

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 474
    Points : 36 602
    Points
    36 602
    Par défaut
    Citation Envoyé par ptitskippy
    C'est à peu près clair mes explications... ?
    Le fonctionnement, je sais pas, mais les explications, oui
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  14. #14
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Bon euh à mon avis ça sert à rien de continuer parce que mon application est un peu trop compliquée à expliquer (j'ai 9 fichiers javascript pour un total de 53Ko...) donc je vais me débrouiller tout seul...
    Merci quand même à vous d'eux d'avoir essayé de m'aider !!

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 31
    Points : 34
    Points
    34
    Par défaut
    Est-ce que le bug pourrais venir du fait que mon bouton, qui affiche la div et donne le focus au champs texte, se trouve dans une frame qui elle même se trouve dans une iframe...
    Si je comprends bien, tu ouvres un layer qui contient une iframe. Ton iframe donne accès à un document qui contient un nouveau frame (ou nouveau iframe?)

    J'avais déjà tenté quelque chose du genre jadis... une iframe dans une iframe dans un layer, ça faisait littéralement planter firefox. ;-) Soit un coup de malchance de ma part, soit le browser supportait mal le tout pour la version du temps...

    Sinon, j'ai fait un essai semblable dans une iframe, dans un layer (un niveau de moins...) et tout baigne. J'ai des "pseudo-processus" qui roulent par setInterval et plusieurs autres événements associés à divers éléments appelés (qui eux sont superposés au layer en question...)

    Si ton code est si complexe, je te suggère
    1) de simplifier une copie de ton code - en retirant tout ce qui n'est pas nécessaire - jusqu'à ce que tu isoles le cas en question;
    2) si, en 1, tu n'arrives à aucun résultat concret, de tester sur une autre machine ayant des composantes matérielles différentes le comportement du script (pourquoi pas après tout! )
    3) si tu n'arrives vraiment pas à résoudre ton problème, de surligner les champs qui sont présentement sous focus en modifiant la couleur de fond ou encore la taille de la bordure de tes input ayant le focus. Ton utilisateur saura alors où il se trouve, que le curseur clignote ou non.

  16. #16
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Bon pour la disposition en fait j'ai dans la page globale :
    - un div en haut de 20px de hauteur
    - une iframe que je redimensionne sur le onresize de la fenêtre pour prendre toute la page moins la taille des 2 divs au dessus et en dessous
    - un div en bas (un peu comme une barre d'état en fait) de 20px aussi

    plus :
    - un div en position absolue avec top et left à 0px, width et heigth à 100%, une couleur de fond avec une opacité de 20% et un z-index de 996.
    - un div en position absolue et un z-index de 997.
    le premier div sert d'arrière plan à la seconde pour éviter que la personne clique sur autre chose que la seconde div. La seconde div, c'est la dialog ! (à noter que ces 2 divs sont ajoutées en javascript et qu'il y aussi 2 autres divs qui me permettent d'afficher un message d'erreur sur le même principe sauf qu'elles ont un z-index de 998 et 999)

    Ensuite dans mon iframe j'ai une page qui contient un frameset qui est composé de 2 frames. J'ai fais comme ça pour qu'on puisse redimensionner ces 2 frames avec la bordure entre les 2.

    Et donc dans chacune de ces 2 frames, j'ai une petite barre d'outils avec notamment le fameux bouton qui permet de renommer une valeur dans la frame correspondante. C'est ce bouton qui ouvre la dialog qui contient un seul champs texte et où j'ai le problème d'affichage du curseur.

    Voila en gros comment est présentée mon application.

    tu ouvres un layer
    C'est quoi que tu appel layer ? une dialog ?

    1) de simplifier une copie de ton code - en retirant tout ce qui n'est pas nécessaire - jusqu'à ce que tu isoles le cas en question;
    J'ai essayé une fois et le problème était résolu mais pas réussi à trouver ce qui clochais... et ça m'a découragé de faire comme ça...
    2) si, en 1, tu n'arrives à aucun résultat concret, de tester sur une autre machine ayant des composantes matérielles différentes le comportement du script (pourquoi pas après tout! )
    Je vais essayer pour voir
    3) si tu n'arrives vraiment pas à résoudre ton problème, de surligner les champs qui sont présentement sous focus en modifiant la couleur de fond ou encore la taille de la bordure de tes input ayant le focus. Ton utilisateur saura alors où il se trouve, que le curseur clignote ou non.
    Comme je l'ai dit, je n'ai qu'un seul champ texte, du coup je peux pas faire ça. Et puis ça ne résoudrais pas entièrement le problème.
    Imagine : le curseur ne se voit donc pas. Tu tape mettons 15 lettres puis tu remarque qu'a la 6è t'en a oublié une. Puisque le curseur ne s'affiche pas, il faut par exemple que tu compte le nombre de fois à appuyer sur la touche gauche pour savoir où est-ce que tu es. Enfin bref c'est vraiment pas pratique !

  17. #17
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Bon vu que ça m'énerve j'ai réfléchis à une autre méthode et ça pose pas de problème à priori.
    Donc on va dire résolu...
    Merci à tous.

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

Discussions similaires

  1. Bug Firefox/Chrome mais pas sur IE8
    Par Firehead dans le forum jQuery
    Réponses: 4
    Dernier message: 14/12/2012, 19h31
  2. [css] bug firefox sur un popup
    Par Damien R dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 18/09/2006, 12h07
  3. Bug Firefox sur tableau centré dans un div (mauvais refresh)
    Par FrankOVD dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 04/07/2005, 17h47
  4. [XHTML] centrer un tableau au milieu d'un div - bug firefox
    Par mondiani dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 07/02/2005, 23h57

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