jQuery 1.4.4 funktioniert in WP 3.1 nicht mehr sauber
codestyling | 29. November 2010 | 13:36
Seit ein paar Tagen hab ich ein paar Funktionstest mit der im Moment verfügbaren WordPress Version 3.1beta1 vorgenommen, um zu sehen, welche Probleme auf meine Plugins zukommen könnten. 3 von 4 Plugins funktionieren noch wie gewünscht, jedoch mein Page Columnist nicht mehr.
Mich hat nicht so sehr die Tastsache schockiert, daß es nicht rund läuft sondern vielmehr, daß jQuery in der neuesten Version, die WP 3.1 beigelegt wird, scheinbar eine Menge Bugs aufweist.
Meine Testseite
Damit man nachvollziehen kann, was ich genau meine, kommt als Erstes mal der entsprechende Seiten Quelltext, den ich zum Testen benutzt habe:
| PHP | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <html> <head> <title>Test Page jQuery</title> <script type='text/javascript' src='http://www.wordpress31.test/wp-includes/js/jquery/jquery.js'></script> </head> <body> <div style="background-color:green;"> <div id="child" style="background-color:red;"> <span>jQuery.css('width') of child block is:</span> <b>?</b> </div> </div> <script type='text/javascript'> (function($) { $(document).ready(function(){ perc = 50; $('#child').css( { width: perc+'%' } ); $('#child > b').html($('#child').css('width')); }); })(jQuery); </script> </body> </html> |
| timing: 0.040s | |
Sinn der Sache ist, in einem DIV container einen weiteren DIV Container zu platzieren, der mittels jQuery auf 50% Breite gezwungen wird. Anschließend wird der prozentuale Wert wieder mittels jQuery ausgelesen und in den Text eingefügt, damit man sehen kann, was jQuery zurückgibt.
Der Schock kam dann mit jQuery 1.4.4, welches mit WordPress 3.1 ausgeliefert werden wird. Hier das Ergebnis als Screenshot. Es werden sowohl WordPress 3.01 als auch WordPress 3.1beta1 dargestellt:

Die neueste jQuery Version gibt nicht mehr den prozentualen Wert sondern wider Erwarten den absoluten Pixel Wert der Breite zurück!
Dies ist eine Verhaltensänderung, die ebenfalls nicht konform zur Spezifikation von jQuery ist. Wenn man eine Unterscheidung zwischen realer Breite und per Stylesheet gesetzten Werten haben will, dann kann man das so machen:
| Javascript | |
1 2 | $('#child').width(); //gibt reale px Werte zurück, egal ob per % gesetzt $('#child').css('width'); //gibt immer so zurück, wie gesetzt wurde, also auch % Werte! |
| timing: 0.003s | |
Ergebnis und meine Besorgnis
Wenn das in jQuery nicht schleunigst bereinigt wird, dann werden eine Menge Plugin nicht mehr korrekt arbeiten, die sich auf prozentuale Werte verlassen. Das betrifft bei Weitem nicht nur mein Plugin, sondern dürfte alle Plugins betreffen, die mit jQuery im Frontend arbeiten. Da fallen mir spontan alle möglichen Bildergallerien, Slider und Teaser ein, die prozentuale Werte für Streckungen und oder Effekte benutzen. Und es gibt bestimmt noch andere Sachen, die auch prozentual funktionieren.
Ich weis nicht, wie ihr das so seht, aber das ist in meinem Augen ein ausgewachsenes Problem, das so nicht im Lieferumfang von WordPress mit der nächsten Version erscheinen darf. Hat jemand ggf. noch andere Bugs in jQuery festgestellt, sodass man einen gesammelten Bug Eintrag machen kann ?






thomas
30.11.2010 | 01:39Hm….hört sich nicht so gut an.
Zumindest kann ich berichten das Lightbox2 in der aktuellen Version unter js 1.4.4 Fehler verursacht.
Hatte das nur mitbekommen, weil ich die Toggle Funktion im neuen JQuery testen wollte - und deshalb in mein Wp3.0.1 kurzzeitig die 1.4.4 eingeladen hatte.
siehe auch:
http://forum.wordpress-deutschland.org/konfiguration/78341-kommentare-ein-und-ausblenden-aber-wie.html#post357794
Grüße
Antworten »
Robert
30.11.2010 | 11:46Ich finde ein Report pro Bug ist vernünfitger als ein Report für eine Sammlung von (eventuell unzusammenhängenden) Issues, und du solltest deine Erkenntnisse auf jeden Fall zusammen mit einer kleinen Testseite ans jQuery-Team weitergeben.
Antworten »
fwolf
30.11.2010 | 19:30Stellt sich die Frage, ob du auch schon bei jQuery.com nachgeforscht hast, WARUM dem so ist?
Evtl. schon als Bug eingetragen? Wenn nicht, mach das doch einfach mal.
jsfiddle.com kommt da als Testinfo auch recht praktisch.
cu, w0lf.
Antworten »
Andreas Kamleiter
30.11.2010 | 22:04Dann willl ich mal hoffen, dass das bis zur finalen Wordpress-Version behoben ist, sonst werde ich wohl mit dem Update erst mal warten. Ich vermute aber, dass da schnell nachgebessert wird, da jQuery inzwischen doch eine sehr große Community hat.
Antworten »