2009-10-03 4 views
2

Je maintiens une page Web et ai besoin de fixer un comportement très étrange sous IE. La page a une table qui affiche un menu pour chaque cellule lorsque la souris se déplace. Tout fonctionne bien tant que vous avez au moins la hauteur de 800px de la fenêtre du navigateur. Si vous parcourez cette page avec Chrome, Opera ou Firefox et que la hauteur de la fenêtre du navigateur est inférieure à 800px, certains menus débordent la fenêtre et l'utilisateur doit faire défiler la page pour afficher les options cachées. C'est le comportement attendu. Mais si vous parcourez la page en utilisant IE, et après que le menu est affiché et que l'utilisateur a fait défiler la page vers le bas pour voir les options cachées, tout mouvement de la souris fera défiler la page vers le haut de la page.Aidez-moi à éviter le défilement automatique bizarre dans IE

Il y a un événement mouseover accroché à l'élément de sous-menu, cet événement permute une image affichée en haut de la page avec une autre liée au contexte du sous-menu. Je pense que ce changement d'image fait cet effet secondaire, mais remplacer le code de fonction par un "return true" ne change pas ce comportement. Je n'ai plus d'idées, donc tout indice sera apprécié.

Ceci est l'URL (belles voitures!): www.kaufmann.cl
Passez la souris sur "Clase C", vu dans un 800px le navigateur affichera une barre de défilement vertical. C'est là que le plaisir commence.

Le paramètre "stackoverflow" permet d'afficher un DIV qui affiche les événements déclenchés et son ordre d'exécution.

EDIT: Ce problème se produit dans IE6 à IE8 (à la fois en mode normal et la compatibilité)

+0

Ok, je donne, donc si vous me suggérer une alternative I vous donnera la bonté. – Rodrigo

+0

FYI, je ne peux pas reproduire l'erreur dans IE6. –

+0

Redimensionner le navigateur pour atteindre une hauteur maximale de 800 pixels. – Rodrigo

Répondre

1

Avez-vous essayé?

<body style="height:1000px;" ... 

Alors que vous ne publiez pas la version de IE qui montrait le problème, sur ma machine (IE8) donnant la <BODY> une hauteur de haut éclaircit le problème de défilement à dos-dessus qui se produit lorsque vous faites défiler (avec le clavier) pendant que les menus contextuels sont affichés.

+0

Oui, et ne fait aucun effet. Vous pouvez voir maintenant appliqué. – Rodrigo

+0

hi Rodrigo - avec le 1000px appliqué, je ne suis plus capable de reprocher un problème.J'essaie de le reprocher comme suit, laissez-moi savoir si c'est la bonne séquence d'étapes: # 2: redimensionner IE8 à 1060px de large par 560 px de haut; # 2: charger votre URL # 3: positionnez la souris sur "Clase C" (ne cliquez sur rien) et passez la souris sur le premier sous-menu de cette section; # 4: flèche vers le bas sur le clavier, faites défiler jusqu'à ce que la souris ne soit plus sur "clase C". Ce que je vois à ce stade est que la section "Clase C" s'effondre (comme prévu) mais je ne vois pas la barre de défilement remise à zéro en haut de la page. Qu'est-ce que je fais mal? –

+0

Oui, avec votre aide, j'ai pu contourner ce problème. Je vous remercie! – Rodrigo

0

Il semble que le navigateur réinitialiser la barre de défilement à la position où le dernier objet où mouseover'ed. Lorsque vous placez la souris sur un élément et faites défiler vers le bas, l'élément actuellement sous la flèche de la souris n'est pas appliqué au style de cet élément, mais dès que la souris est déplacée de 1 pixel dans n'importe quelle direction, la barre de défilement est réinitialisée. la souris est à nouveau placée sur l'élément mis en surbrillance avant de faire défiler vers le bas. Quelqu'un sait comment contourner ce comportement stupide?

0

Essayez d'ajouter return false; à vos onmouseover extraits, comme suit:

<a onmouseover="MM_swapImage('cambio','', 
    '/publicador/site/artic/20090513/imag/FOTO_0520090513175050.jpg', 
    '1'); return false;"></a> 

(D'autres attributs et le contenu ont été supprimés par souci de concision.)

Questions connexes