27. März 2008
Das Entwicklerteam des Opera-Browsers ist ausgesprochen aktiv und immer um die Weiterentwicklung ihres Browsers bemüht. Erst gestern meldete das Opera Desktop Team 100 von 100 möglichen Punkten im ACID 3 Test des Webstandards Projects (im Wettrennen mit Safaris Webkit-Engine) und darf sich nun feiern und auf die Schulter klopfen lassen.
Sehr schön, wirklich. Allerdings kontrolliert der ACID3-Test offensichtlich nicht Ergebnisse grundlegender Rechenoperationen, die jeder Browser beherrschen sollte (sowas wird allgemein nach der Grundschule vorausgesetzt). Und so passiert es, dass der Opera seit Jahren nicht dazu fähig ist, Prozentangaben als reelle Zahlen zu verarbeiten. Stattdessen schneidet er beständig auch in der neuesten Beta-Version Nachkommastellen einfach weg und behandelt Breiten- und Höhenangaben in Prozent als Integerwerte.

Das W3C legt in der CSS2 Spezifikation in Abschnitt 4.3.3 fest:
The format of a percentage value (denoted by <percentage> in this specification) is an optional sign character (’+’ or ‘-’, with ‘+’ being the default) immediately followed by a <number> immediately followed by ‘%’.
Die Definition für <number> findet sich in Abschnitt 4.3.1, die wichtigen Passagen sind markiert:
Some value types may have integer values (denoted by <integer> ) or real number values (denoted by <number>). Real numbers and integers are specified in decimal notation only. An <integer> consists of one or more digits “0” to “9”. A <number> can either be an <integer>, or it can be zero or more digits followed by a dot (.) followed by one or more digits. Both integers and real numbers may be preceded by a “-” or “+” to indicate the sign.
Die Auswirkungen dieses Bugs bekommt man bei der Positionierung von Containern mit flexiblen Spaltenbreiten oder -höhen, sowie bei der Skalierung von Schriftgrößen (man denke an krumme Werte infolge Vererbung) zu spüren, denn wo selbst der IE5 (FF und Safari natürlich ebenso) bei der Rechnung 66.666% + 33.333% = 99.999% (bei Layoutbreiten unter 100.000 Pixeln also effektiv 100 Prozent) errechnen, landet Opera bei 99 Prozent denn er macht daraus 66%+33%. Aus dieser Eigenart ergeben sich dann plötzlich Abstände und Zwischenräume im Layout wo keine sein dürften. Für Webdesigner entstehen hingegen Fragezeichen über dem Kopf und unnötiger Anpassungsaufwand, denn patchen lässt sich dieser Bug leider nicht.
Also liebe Opera-Entwickler: Wenn Ihr mit dem Feiern fertig seid wäre es wirklich ein Segen, wenn ihr Euch dieses Problems endlich mal annehmen könntet. Ich war auch diesmal so freundlich, einen Testcase zu bauen, extra für Euch.
Auf der anderen Seite zeigt sich für mich mal wieder, dass auch die ACID-Tests (mittlerweile in der 3. Generation) für den Alltag nicht die Praxisnähe haben, die man sich eigentlich wünschen würde, um die Rendering-Qualität von Browsern korrekt einschätzen und vergleichen zu können.
Update 16.6.2012: Vor wenigen Tagen ist Opera 12 erschienen. Und mit dieser Version ist dieser “ewige” Bug nun endlich beseitigt. Vielen Dank.
Donnerstag, 27.03.08 (12:31 Uhr)
Das ist kurios. Ich gehe davon aus, dass du bereits einen „offiziellen“ Bug gemeldet hast.
Bin echt sprachlos, dass die Opera-Jungs und Mädels das nicht hinbekommen…
Donnerstag, 27.03.08 (13:19 Uhr)
Ja, ist raus. Sowohl als Bug gemeldet als auch den Testcase im Developer-Forum gepostet.
Donnerstag, 27.03.08 (14:13 Uhr)
Manueller Trackback
Donnerstag, 27.03.08 (15:55 Uhr)
Na hoffentlich wird das endlich mal gefixt. Schon komisch das die darauf noch nicht reagiert haben. Wir sollten ja nicht die einzigen sein die das im Laufe der Jahre bemerkt haben.
PS: Ein kleiner Typo Fehler ist mir im Testcase ins Auge gestochen. Im rechten Div steht als Text “#left” statt “#right”.
Nicht das die Entwickler dadurch noch verwirrt werden ;)
Freitag, 28.03.08 (00:21 Uhr)
zu deinen bemerkungen zum acid3 test:
Ich finde es gut, dass es ihn gibt, da browser gepusht werden, bestimmte features zu implementieren bzw. zu fixen.
Aber natürlich sollte man sich der Bedeutung der Acid Tests bewußt sein:
Sie sind wie ein Diktat, deren Texte eine Woche zuvor zum Üben ausgeteilt wurden. Wie viel die Schüler davon lernen, hängt entscheidend vom ausgewählten Text ab.
Dein Bug wäre es wert gewesen, aufgenommen zu werden :-).
Lesenswert hierzu:
http://shaver.off.net/diary/2008/03/27/the-missed-opportunity-of-acid-3/
Montag, 31.03.08 (10:31 Uhr)
Den Bug kenne ich auch schon lange, habe ihn auch schon bei Opera melden wollen und gesehen, dass der Bug bereits existierte. Das war vor 3 Jahren ...
Montag, 14.04.08 (09:16 Uhr)
der bug ist doch schon altbekannt, oder täusche ich mich da.
wurde doch auch schon ziemlich lange in der opera community ausdiskutiert.
Montag, 14.04.08 (09:58 Uhr)
@Marcel,
Sicher, das schreibe ich ja auch oben im Beitrag. Der ACID3-Hype war lediglich ein willkommener Anlass, auf dieses immer noch bestehende Problem aufmerksam zu machen.
Ich wüsste ehrlich gesagt nicht, wass es bei einem so offensichtlichen Bug auszudiskutieren gibt. Der W3C-Standard ist in diesem Punkt nun wirklich eindeutig (siehe Zitate im Beitrag) und von allen anderen Browsern wird es auch standardkonform umgesetzt.
Bei dieser Gelegenheit sei auch erwähnt, dass ich bisher vergeblich auf jegliches Feedback von Opera warte. Weder der Bugtracker- noch der Foreneintrag wurden in irgendeiner Form beantwortet.
Dienstag, 12.08.08 (15:49 Uhr)
Hi,
das geilste ist ja, das diese Prozent nichteinmal vererbt wird.
als Beispiel ich habe in die Zelle einer Tabelle eine weitere Tabelle implementiert.
Beide sollten die Höhe 100% haben.
Naja die Erste Tabelle hat irgendetwas in der Art von 100% die zweite hat die Höhe 0.
jetzt muß ich meinen “dynamischen” Code in einen festen umwandeln!
Gruß Nick
Dienstag, 12.08.08 (16:04 Uhr)
@Nick: height ist keine Eigenschaft, die vererbt wird, also ist das Verhalten korrekt. Von verschachtelten Tabellen würde ich aber eh gleich abraten.