Un onMouseOut qui ne se produit pas
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Un onMouseOut qui ne se produit pas



  1. #1
    invite234d9cdb

    Un onMouseOut qui ne se produit pas


    ------

    Bonsoir !

    J'ai aujourd'hui remarqué un bug sur mon site. Pour le visualiser, simplement se rendre sur www.supcomfaguide.com et cliquer sur "chapter 0" ou tout autre bouton de la page principale. Faire ensuite "précédent" avec le bouton de son navigateur. Surprise : le bouton de la page principale sur lequel vous avez cliqué est dans l'état "onMouseOver" alors que la souris n'est absolument plus dessus !

    Note : le problème ne se présente pas sous Internet Explorer ni sous Google Chrome Seul Safari et Firefox sont concernés (je n'ai pas testé Opera). Je dois avouer être assez démuni face à ce bug très étrange : que puis-je faire pour l'éviter ? Qqun d'autre a-t-il jamais observé quelque chose de similaire ?

    D'avance merci pour toute aide !

    -----

  2. #2
    invite765732342432
    Invité

    Re : Un onMouseOut qui ne se produit pas

    C'est pas illogique comme fonctionnement...

    Une technique pour éviter que ça fasse "bête" serait simplement de virer tous les highlights actifs dès qu'on passe en onmouseover sur un des menus. (Je ne sais pas si je suis clair)

  3. #3
    Towl

    Re : Un onMouseOut qui ne se produit pas

    Aucun soucis avec mon firefox 3.0.5, que ce sous sous linux ou windows. De même pas de soucis avec konqueror, ni avec IE 8beta
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  4. #4
    invite765732342432
    Invité

    Re : Un onMouseOut qui ne se produit pas

    Citation Envoyé par Towl Voir le message
    Aucun soucis avec mon firefox 3.0.5, que ce sous sous linux
    Euh... chez moi, il y a bien le "problème" (firefox 3.0.5 sous linux)

    Une précision pour LicenceXP:
    onmouseover se déclenche simplement quand on entre et onmouseout quand on sort.
    Dans ton cas, on ne sort pas vraiment: on change de page, mais la souris n'est jamais vraiment sortie de la zone.

  5. A voir en vidéo sur Futura
  6. #5
    Towl

    Re : Un onMouseOut qui ne se produit pas

    Euh... chez moi, il y a bien le "problème" (firefox 3.0.5 sous linux)
    Marrant ca

    De toute facon, le plus propre c'est de tout initialiser au chargement de la page que ce soit par la méthode onload ou autre.
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  7. #6
    invite234d9cdb

    Re : Un onMouseOut qui ne se produit pas

    N'étant malheureusement pas un pro en informatique (j'apprends les choses sur le tas), j'ignore malheureusement comment virer les highlights actifs (de quoi s'agit-il ?) ou comment tout initialiser au chargement de la page (quand on utilise le bouton précédent de son navigateur, la page est "rechargée" ?). Je vais faire une cherche google sur base de ces deux pistes

  8. #7
    invite765732342432
    Invité

    Re : Un onMouseOut qui ne se produit pas

    Citation Envoyé par LicenceXP Voir le message
    j'ignore malheureusement comment virer les highlights actifs (de quoi s'agit-il ?)
    Désolé
    Je parlais du menu surligné qui le reste (highligth = mis en valeur = surligné)

    Est-ce toi qui a conçu l'interface du site ?

    Dans le code, pour chaque "chapter", on voit ceci:
    Code:
    onMouseOver="mc0real.src=mc0over.src" onMouseOut="mc0real.src=mc0out.src"
    En fait, sur le onMouseOver, il est possible de mettre à la place:
    Code:
    mc0real.src=mc0out.src;mc1real.src=mc1out.src;(etc pour chaque menu);mc0real.src=mc0over.src;
    De cette façon, dès que l'on passe sur un menu, on éteint tous les autres puis on allume celui-là

    Il existe bien sur d'autres manières de faire, plus propres, comme de créer un fonction javascript qui reprend le bout de code commun "éteignant" tous les menus.

    Pour ce qui est du onload, il suffit de faire pareil qu'indiqué ci dessus, mais tu le places là:
    Code:
    <body onload="eteindreTousLesMenus();">
    Mais je ne suis pas sur que cette méthode soit appelée dans le cas dont tu parles.

    Voilà, normalement, ça devrait te permettre de résoudre ton problème. Si ça ne suffit pas, dis-le, j'essaierai de te faire un truc propre

  9. #8
    yoda1234

    Re : Un onMouseOut qui ne se produit pas

    Citation Envoyé par Towl Voir le message
    Aucun soucis avec mon firefox 3.0.5, que ce sous sous linux ou windows. De même pas de soucis avec konqueror, ni avec IE 8beta
    Pareil pour moi, Windows+FF 3.05, j'ai également testé avec Opéra 9.60, pas de problème.
    Là où l'ignorance est un bienfait, c'est de la folie d'être sage (Thomas Gray).

  10. #9
    invite234d9cdb

    Re : Un onMouseOut qui ne se produit pas

    Mmmh en y réflechissant bien le premier code que tu me donnes ne réglera pas le problème : si je fais précédent sur le navigateur j'aurai tjs le bouton qui sera en mode onmouseover, juste qu'à présent sur base du nouveau code, cet état "onmouseover" disparaitra si je passe la souris sur n'importe quel autre bouton du menu (alors qu'avant pour faire disparaitre cet état je n'avais pas d'autre choix que d'actualiser la page ou de passer la souris sur le bouton coupable).

    Je vais donc me concentrer sur la deuxième possibilité onload="toutréinitialiser();". Si j'ai bien compris, le navigateur est obligé de jouer la fonction contenue dans onload, même s'il a déjà la page en cache et qu'on utilise le bouton précédent ? Je vais vite aller écrire ce qu'il faut pour tester ça. Merci pour les pistes

  11. #10
    Towl

    Re : Un onMouseOut qui ne se produit pas

    le plus simple pour tester quand sont activer les onXXXX c'est de faire des alert box :
    Code:
    <..... onload=alert('coucou')>
    et quand coucou s'affiche, c'est qu'il est lancé (plus rapide que de vérifier la présence ou l'absence d'un style ou autre )
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  12. #11
    invite234d9cdb

    Re : Un onMouseOut qui ne se produit pas

    Bonne astuce pour le alert(), je n'y avais jamais pensé

    Malheureusement le code suivant n'a nullement réglé mon problème

    ...
    function nivel() {

    mc0real.src=mc0out.src;
    mc1real.src=mc1out.src;
    mc2real.src=mc2out.src;
    mc3real.src=mc3out.src;
    mc4real.src=mc4out.src;
    mc5real.src=mc5out.src;
    mc6real.src=mc6out.src;
    }
    </script>
    </head>
    <body onload="nivel()">
    ...
    J'ai pu vérifier qu'il fonctionnait bien au chargement de la page index.html, mais si je clique sur n'importe quel bouton et puis que je reviens en arrière, le problème est toujours là : le bouton que je venais de cliquer est dans l'état "onmouseover" N'y-a-t-il pas moyen de forcer le onload même si la page n'est pas chargée (et qu'on a donc fait qu'utiliser le bouton "précédent" de son navigateur) ?

    Ah et pour répondre à la question, oui j'ai programmé moi-même le site et oui la programmation est affreuse on me l'a déjà dit

  13. #12
    Bruno

    Re : Un onMouseOut qui ne se produit pas

    Quand tu fais précédent, tu ne recharges pas la page, donc le onLoad est inutile. Essaye de corriger ton problème avec un onmouseclick (ou onclick je sais plus).

  14. #13
    invite234d9cdb

    Re : Un onMouseOut qui ne se produit pas

    Un onclick ne changera pas le problème je crains l'utilisateur cliquera, laissera sa souris sur le bouton pendant que la page suivante se charge et donc le onmousover sera tjs "actif" s'il revient en arrière...

  15. #14
    invite234d9cdb

    Re : Un onMouseOut qui ne se produit pas

    Ca y est j'ai trouvé ! Je suis tombé par hasard en faisant des recherches sur ceci : onUnload="".

    Il suffit donc de mettre dans la balise body onUnload="fonction remettant_tout_à_zéro()"

    Dans le détail, pour toute personne qui tomberait un jour sur cette discution, la solution est :
    ...
    function nivel() {

    mc0real.src=mc0out.src;
    mc1real.src=mc1out.src;
    mc2real.src=mc2out.src;
    mc3real.src=mc3out.src;
    mc4real.src=mc4out.src;
    mc5real.src=mc5out.src;
    mc6real.src=mc6out.src;
    }
    </script>
    </head>
    <body onUnload="nivel()">
    ...
    Testé en local, ce script règle le problème. Merci à tout ceux ayant participé à ce topic et bonnes fêtes à tous !

Discussions similaires

  1. [Biologie Cellulaire] est ce qui il y a des enzymes qui ne sont pas protéiques
    Par invitefc0f7b01 dans le forum Biologie
    Réponses: 2
    Dernier message: 04/11/2007, 11h29
  2. Qui reconnait ce produit: Panasonic sw-9584-c
    Par invite848b604d dans le forum Matériel - Hardware
    Réponses: 2
    Dernier message: 08/09/2007, 10h29
  3. Moteur qui produit des bruitages !!!
    Par invite13761b79 dans le forum Électronique
    Réponses: 3
    Dernier message: 22/01/2007, 18h19
  4. Produit de solubilité qui précipite en 1er ?
    Par invite1d656ca6 dans le forum Chimie
    Réponses: 2
    Dernier message: 21/12/2006, 20h55
  5. La chaudière qui produit de l'électricité (stirling)
    Par r17777 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 2
    Dernier message: 27/09/2006, 12h36
Découvrez nos comparatifs produits sur l'informatique et les technologies.