Code Styling Project

It’s not a bug, it’s always a feature.
  • Deutsch
  • English
  • rss
  • Home
  • Blog
  • Impressum
  • Entwicklungen
  • Fehlerbehebungen
  • Anleitungen

jQuery 1.4.4 funktioniert in WP 3.1 nicht mehr sauber

codestyling | 29. November 2010 | 13:36

jquery-documentationSeit 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>&nbsp;<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:
jquery-144-css-bug
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 ?

Kategorien
Deutsch, WordPress (DE), jQuery in WordPress
RSS Kommentare
RSS Kommentare

« Beschriftungstexte der Thickbox in WordPress anpassen IDN basierte Blogs, WordPress Administration und JSON Anfragen »

4 Antworten    Schreib einen Kommentar

thomas

thomas

30.11.2010 | 01:39

Hm….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

Robert

30.11.2010 | 11:46

Ich 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

fwolf

30.11.2010 | 19:30

Stellt 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

Andreas Kamleiter

30.11.2010 | 22:04

Dann 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 »

Du kannst diese Tags verwenden : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Navigation

  • Allgemein
  • jQuery in WordPress
  • Politik
  • WordPress (DE)

Suche

Neuere Beiträge ...

  • Windows XAMPP mit Subdomains in WordPress Multisite
  • Eigene Datenbanktabellen in WordPress Plugins - Teil 1
  • WP e-Commerce bricht absichtlich andere Plugins und Themes
  • Memory Limit - das leidige Thema bei 1und1
  • IDN basierte Blogs, WordPress Administration und JSON Anfragen

Ältere Beiträge ...

  • Beschriftungstexte der Thickbox in WordPress anpassen
  • Super User Theme Tester - eines meiner Werkzeuge
  • memory size of xxx bytes exhausted - es nervt langsam gewaltig
  • WordPress Theme “TwentyTen” und der Home Menü Eintrag
  • Weisse Blogs bei WordPress Multi Site nach Themewechsel
rss RSS Kommentare valid xhtml 1.0 design by jide powered by Wordpress get firefox