robsite

jQuery Speedup bei vielen Events

Firefox 3 ist extrem lahm beim verlassen einer Seite, wenn man jQuery benutzt und sehr viele (>1000) Elemente an Events bindet.

Beispiel. 5000 divs, dann:

$("div").hover(function() { 
    $(this).addClass('highlight'); 
},
function() {
    $(this).removeClass('highlight');
})

Seite läd, funktioniert, man klickt auf nen Link zu ner anderen Seite, wartet ein wenig und...

/images/posts/0000/1600/ffjqueryhang_big.jpg

Stellte sich heraus, dass jQuery beim verlassen der Seite die Eventbindungen aller Elemente entfernt. Genau daran bricht Firefox aber verzweifelt zusammen.

Der Code dafür liegt in jquery-1.3.2.js von Zeile 3106 bis 3111 und verhindert anscheinend Speicherleaks im IE und mouseover-Fehler beim neuladen:

// Prevent memory leaks in IE
// And prevent errors on refresh with events like mouseover in other browsers
// Window isn't included so as not to unbind existing unload events
jQuery( window ).bind( 'unload', function(){ 
    for ( var id in jQuery.cache )
    // Skip the window
    if ( id != 1 && jQuery.cache[ id ].handle )
        jQuery.event.remove( jQuery.cache[ id ].handle.elem );
});

In jquery-1.3.2.min.js:

o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});

Ich hab ihn mal rausgeworfen, wodurch FF die Seite wieder schnell verlässt ohne zu hängen.

Bis jetzt hab ich keine mysteriösen Fehler beim refresh entdeckt. Auch Speicherleaks sind keine große Verschlimmerung der browser-experience für IE-Nutzer...

· jquery, webdev ·

PIRATEN in den Bundestag

piraten-in-den-bundestag-2

Bei den meisten der aktuellen Themen, die sich mit Jugendschutz, Zensur oder Urheberrecht beschäftigen (Vorratsdatenspeicherung, Anti-Kinderporno Netzfilterung) verzweifel ich gelegentlich ob der Kompetenz unserer Volksvertreter.

/images/posts/0000/1582/bigschaeuble-plakat-1984_thumb.jpg

Ursula sperrt Domains und versteht nicht, dass Informationen im Internet immer ihren Weg finden und dass man besser die Erstellung selbiger verhindern sollte.

Ältere Herren aus Bayern fordern reflexartig umfassendere Verbote von Computerspielen, obwohl Deutschland schon mit den restriktivsten Jugendschutz der Welt hat und es in Ländern, in denen man jedes Spiel frei kaufen kann, nicht mehr Gewalt unter Jugendlichen gibt.

Die Musik- und Filmindustrie verklagt lieber potentielle Kunden, anstatt ihnen das zu geben, was sie wollen. Dateien ohne DRM in guter Qualität und Originalsprache zu einem fairen Preis (das will ich zumindest :>). Zumindest die Musikindustrie hats langsam begriffen, nach langem Sträuben und Gezänk.

Da kann man nun warten, bis die aktuelle Generation abtritt und Leute mit mehr Medienkompetenz nachrücken. Oder man forciert das ganze ein wenig und hilft der Piratenpartei, zur Wahl des Bundestages zugelassen zu werden.

Die PIRATEN sind gegen unnötige Überwachung, für stärkeren Datenschutz, gegen Softwarepatente, für einen transparenten Staat, für Open Access (mit Steuergeldern erstellte Werke sollten auch der Allgemeinheit kostenlos zur Verfügung gestellt werden) und für ein neues Urheberrecht, das es ermöglicht "alles Wissen und alle Kultur der Menschheit zusammenzutragen, zu speichern und heute und in der Zukunft verfügbar zu machen".

Einfach ne Unterschrift an seine Lokalpiraten schicken und am 7. Juni (Europa) und 27. September (Bundestag) nicht die Wahl verschlafen.

Wem eh alles egal ist kann natürlich auch die Pogo Partei wählen :D

· internet, politik ·
Mastodon