OVH Cloud OVH Cloud

probleme avec evenements mouseover et mouseout - propriété className

12 réponses
Avatar
pollux
bonjour, j'ai un petit soucis

je suis en train de faire un menu CSS
pour IE j'ai besoin d'attacher des évènement onmousehover et onmouseout
sur des élements d'une liste

j'utilise cette fonction :

sfHover = function() {

var sfEls = document.getElementById("nav").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=" sfhover";
}
sfEls[i].onmouseout=function() {
var cl = new RegExp(" sfhover\\b");
this.className=this.className.replace(cl, "");
cl = null;
}
}
sfEls ="";
}

if (window.attachEvent) window.attachEvent("onload", sfHover);

le problême ne vient pas de la regexp, j'ai essayé avec autre chose de
moins gourmand et c'est la même chose.

Le comportement dans IE est normal au départ, menu rapide, puis devient
de plus en plus lent au fur à mesure que je passe sur les éléments de la
liste, plus je passe sur des élément et plus ça ralenti, en fait le
curseur de la souris oscille en passant du curseur normal au curseur
avec le sablier.

Il semblerait que ça soit dû a l'utilisation de la propriété className


la mémoire utilisée par IE monte et l'utilisation du processeur monte
petit à petit jusqu'à 80%

c'est un peu énorme quand même

c'est le seul script que j'utilise sur cette page

avez vous une idée de ce qui cause ce ralentissement ?

2 réponses

1 2
Avatar
ASM
ASM wrote:

à jeter : incomplet et ne vaut pas tripette avec IE

<ul id="menu">
<li><a href="principal">Principal>


par contre là c'est ok

voir chez OpenWeb le menu intelligent


mais j'ai perdu le lien exact


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
pollux
ASM wrote:
pollux wrote:

ben disons que pour mon menu j'utilise des listes UL et LI il faut
donc un comportement mouseover sur le li et je ne vois pas d'autres
myen que de rattacher cet evenement par JS pour IE



<ul id="menu">
<li><a href="principal">Principal>
<ul>
<li><a href="secondaire1.htm">secondaire 1</a></li>
<li><a href="secondaire2.htm">secondaire 2</a></li>
<li><a href="secondaire3.htm">secondaire 3</a></li>
</ul>
</li>
</ul>

#menu ul li { bla bla }
#menu ul li a { bla bla }
#menu ul li a ul { display: none; }
#menu ul li a:hover ul { display: block; }

voir chez OpenWeb le menu intelligent



oui je connais par contre je ne crois pas que c'est vraiment correct
d'imbriquer les <A> comme ça

Enfin bon j'en ai testé des tonnes de façons différentes et j'ai
exactement le même comportement avec IE (Je précise, mon menu comporte
un nombre considérable d'ITEM) IE est buggué il ne libère pas la mémoire
et je n'ai pas de moyen (que je connaisse) pour la libérer moi même


1 2