2009-03-20 4 views
1

Ich habe eine Webseite mit vielen (bis zu 100+) HTML-Elemente auf. Jeder hat ein onmouseover-Ereignis, das für das Auslösen von Logik und Rendering registriert wird, je nachdem, über welches Element sich die Maus bewegt.Beschleunigung mehrerer onmouseover Ereignisse in IE

Ich finde, dass in IE die mehr onmouseover Ereignisse, die regnered werden, desto länger dauern sie zu schießen. In Firefox ist die Geschwindigkeit in Ordnung und in Chrome noch schneller!

Kennt jemand eine Lösung für dieses Problem. Ich dachte vielleicht ein einzelnes onmousemove Ereignis zu registrieren und zu versuchen, das DOM Element von den Koordinaten zu holen, aber ich bin unsicher, wie man das tut oder wenn es nur ein Fudge um das Problem ist.

+0

Beispielcode bitte. 100 Elemente ist nicht viel (auch für IE). Es kann die "gewisse Logik" sein, die optimiert werden kann, nicht die Ereignisbindung. –

+0

Wenn Sie uns sagen, was Sie mit der Ereignisbehandlung erreichen möchten, könnte jemand eine effizientere Lösung anbieten. –

Antwort

2

Fügen Sie ein onmouseover oder mousemove (ich denke, beide dieser Blase, kann mich nicht erinnern) Ereignis an den Körper und wenn Sie über Ihre tatsächlichen Elemente schweben, können Sie damit umgehen, was Sie tun müssen, da es bis zur Blase Körper, wo Sie mit dem Element umgehen können, über das Sie tatsächlich mausiert haben. Sie können benutzerdefinierte Attribute oder expando-Eigenschaften dieses Elements verwenden, um mit dem zu arbeiten, was Sie im Mouseover für das spezifische Element tun müssen.

Sie sollten Ereignisse wirklich nur so anhängen, wie Sie sie brauchen, und sie lösen, wenn Sie sie nicht mehr benötigen. Auf trivialen Seiten ist dies wahrscheinlich nicht erforderlich, aber in einem Szenario wie dem Ihren wird es die clientseitige Leistung verbessern. Wir haben so Sachen gemacht, wo ich gearbeitet habe, wenn wir tausende Formelemente auf einer Seite hatten.

Meine zwei Cent, nickyt

+0

Das klingt großartig, aber wie würde ich herausfinden, über welches Element ich schwebte? Ich muss einige Logik und markieren Sie das Element über basierend auf einige Logik basierend auf seiner Position in der DOM – Sheff

+0

Das Element, das Sie tatsächlich über schweben, kann aus der IE-Implementierung event.srcElement oder alle anderen Browser-Ereignis Ziel Eigenschaft gezogen werden. Es wäre jedoch wahrscheinlich sinnvoller, ein JS-Framework wie jQuery zu verwenden, um das Cross-Browser-Forking zu vermeiden. Ich hoffe, das hilft. – nickytonline

+0

Großartig, das hat perfekt funktioniert, aber es ist immer noch ein bisschen langsam. Wie andere erwartet haben, denke ich, dass ich auch einen anderen Engpass habe. Prost – Sheff