dWing — die Welt ist nicht gerecht

sign in

Form submission und EventListener

Ich bin ja interessiert an richtigem dem Standard entsprechendem Javascript. Demzufolge bin ich auch Verfechter der Meinung das man in Javascript Ereignisse mit EventHandlern behandelt, die man über element.addEventListener(eventType, eventHandler, bubbling) hinzufügt. Durch diese Methode hat man Zugriff auf die Ereigniseigenschaften und man hat auch die Möglichkeit mehrere EventHandler anzufügen und diese der Reihe nach abzuarbeiten, bzw die weitere Abarbeitung durch Ereignismethoden zu unterbinden. So Zeugs wie element.onEvent = eventHandler; oder sogar onclick="javascript: eventHandler();" lehne ich grundsätzlich ab. Ich halte es einfach für unsauberen Stil, und in der DOM Spezifikation ist so etwas auch nicht enthalten. Der richtige Weg ist es addEventListener zu benutzen.

Jetzt habe ich allerdings über zwei Stunden damit verbracht den FCKeditor in meine Testversion von dWing einzubinden. Ich habe mir also einen EventListener für das submit Ereignis des Formulars registriert um das Formular im Hintergrund per XHR zu übertragen. Hat auch super funktioniert solange bis der FCKeditor nicht eingebaut war. Außerdem wollte ich den speichern Button des FCKeditors benutzen um mich nicht selbst um einen submit Button kümmern zu müssen. Nur leider ging danach nichts mehr.

Ich dachte zuerst der FCKeditor wäre an allem schuld denn er spielt selbst mit dem submit Event umeinander um vor dem Abschicken des Formulars die Eingaben des FCKeditors in eine versteckte textarea zu kopieren. An sich sehr gut. Somit kann ich direkt den Inhalt des textarea verarbeiten ohne direkt auf FCKeditor Methoden zugreifen zu müssen.

Es funktionierte aber nicht. Wie sich aber heraus gestellt hat war nicht der FCKeditor schuld sondern Firefox. Mit einem Klick auf den speichern Button im FCKeditor ruft dieser die form.submit() Methode auf. An sich müsste das ja kein Problem sein. Ein submit Ereignis wird ausgelöst und es erscheint logisch das jeder EventHandler darüber informiert wird. Dank eines Bugs in Mozilla ist dies aber nicht der Fall.

Noch schlimmer ist, dass die Leute bei Mozilla den Fehler gar nicht beseitigen wollen. Gründe dafür sind, dass sie die Abwärtskompatibilität zu 8 Jahre alten Browsern nicht stören wollen und weil jemand der über Script die form.submit() Methode aufruft auch gleich den EventHandler aufrufen könnte. Na wunderbar.

Ich bin mal wieder sehr angepisst das ich über zwei Stunden einem Fehler nachgejagt bin den niemand ausbessern will. Ich hoffe mal dass z.b. die WHAT Arbeitsgruppe etwas dagegen unternimmt und ein einheitliches Verhalten festlegt. Dann sollte dieses Verhalten noch in einem möglichen Acid4 Test überprüft werden und vielleicht kann ich dann in 3 Jahren die ganzen Hacks aus meinem Javascript Code rauslöschen.

Kleine Mozilla Statistik

Da Heute mal wieder ein paar von meinen Patches in Mozilla aufgenommen wurden habe ich ein wenig Statistik gemacht...

swatinem@swatinux-mobil:~/mozilla-central$ hg log --template "{author|email}\n" | sort | uniq -c | sort -nr
   1520 reed@reedloden.com
    721 bzbarsky@mit.edu
    573 roc+@cs.cmu.edu
    566 gal@mozilla.com
    566 bclary@bclary.com
    560 jruderman@hmc.edu
    535 dbaron@dbaron.org
    526 gavin@gavinsharp.com
    485 brendan@mozilla.org
    432 mozilla.mano@sent.com
    380 vladimir@pobox.com
    374 sdwilsh@shawnwilsher.com
[...]
     21 tglek@mozilla.com
     21 steffen.wilberg@web.de
     21 rcampbell@mozilla.com
     21 bryner@brianryner.com
     19 zweinberg@mozilla.com
     19 pekka.vanhoja
     19 arpad.borsos@googlemail.com
     18 wtc@google.com
     18 chris.double@double.co.nz
     17 wr@rosenauer.org
     17 dmandelin@mozilla.com
[...]
swatinem@swatinux-mobil:~/mozilla-central$ hg log --template "{author}\n" | wc -l
19265
swatinem@swatinux-mobil:~/mozilla-central$ hg log -r1
changeset:   1:9b2a99adc05e
user:        hg@mozilla.com
date:        Thu Mar 22 10:30:00 2007 -0700
summary:     Free the (distributed) Lizard! Automatic merge from CVS: Module mozilla: tag HG_REPO_INITIAL_IMPORT at 22 Mar 2007 10:30 PDT,
swatinem@swatinux-mobil:~/mozilla-central$ hg log -r tip
changeset:   19264:81b6a486f82e
tag:         tip
user:        Arpad Borsos <arpad.borsos@googlemail.com>
date:        Mon Sep 15 17:40:25 2008 +0200
summary:     Bug 454766 - Add suggested parentheses to layout/; r+sr=roc; (with nits by sgautherie)

Und was soll man da jetzt rauslesen? Seitdem Mozilla seit März 2007 auf Mercurial läuft wurden ~19200 Veränderungen gemacht. 19 Davon sind von mir :) Also habe ich 0.1 der gesamten Änderungen gemacht. :) Sehr gut. Würde ich jetzt noch herausfinden wann mein erster Patch war, wäre die Quote sicherlich noch höher.

Aktuelles

Lange habe ich nichts mehr in meinen Blog geschrieben, irgendwie fehlt mir die nötige Motivation. Wie mir auch für alles andere die nötige Motivation fehlt. Insbesondere auf PHP und Webprogramierung habe ich in letzter Zeit gar keine Lust. An dWing habe ich schon lange nicht mehr gebastelt. Auch habe ich nicht mit den schönen neuen CSS Features von Firefox 3.1 rumgespielt, wobei ich auf diese schon sehnsüchtig gewartet habe. border-image, :nth-child(), und bald sogar mehrere Hintergrundbilder. So langsam entwickelt es sich :)

Auch über <video> Unterstützung freue ich mich sehr, auch wenn es in meinen Tests noch nicht so richtig funktioniert hat. Auch im Acid3 Test hat Firefox 3.1 mächtig zugelegt. Auf 85 Punkte kommt er im Moment und ich hoffe das es noch mehr werden. Der Patch für SVG Animationen entwickelt sich langsam. Und die SVG Performance allgemein wurde seit der 3.1 Entwicklung sehr verbessert. Man darf also gespannt sein.

Selbst habe ich am Anfang der Ferien einen sehr kleinen Patch geschrieben, aber seitdem auch nichts gemacht. In den letzten Tagen habe ich etwas das Build System studiert und experimentiert mit SCons, aber noch ist es nicht weit genug als dass ich was vorzeigen könnte. Ich finde es sehr erschreckend wie kompliziert das aktuelle autoconf basierte System ist. Die hälfte des Codes ist nur da um mit irgendwelchen exotischen, wahrscheinlich sowieso schon seit Jahren aufgegebenen Compilern und Systemen umzugehen.

In diesem Zusammenhang sei auch das einzige erwähnt was ich an Apple mag, und zwar das sie alte Versionen von OSX sehr schnell aufgeben. OSX 10.4 war das einzige System welches länger als 2 Jahre unterstützt wurde, und wofür sogar einige Tage nach erscheinen von 10.5 noch ein Update kam. Aber inzwischen ist OSX 10.4 auch schon tot. Firefox 3 unterstützt diese Version noch, ältere aber nicht mehr. Ab und zu muss einfach der alte Ballast abgeworfen werden. Dabei muss ich auch den Entwicklern des X Servers gratulieren. Sie haben es tatsächlich geschafft zwei drittel des gesamten Codes rauszulöschen weil dieser für Kompatibilität mit irgendwelchen Systemen gesorgt hat die schon seit einiger Zeit nicht mehr funktioniert haben und der Code nur so vor sich hin verrottet ist. Auch veraltete Module wurden einfach gelöscht. Saubere Leistung, gut so :)

Apropos X, ich bin sehr gespannt auf die neue Version und die neue Version von Mesa. Mit dabei ist freie 3D Unterstützung für die Radeon Karte in meinem Desktop PC. Auch in Sachen Kernel Modesetting geht es denke ich gut vorwärts. Phoronix hatte eh davon gesprochen das letzten Monat wie Weihnachten war für ATI Karten Besitzer. Also für mich ist erst Weihnachten wenn dieser ganze Code Mainstream ist, und ich hoffe es inständig das dies noch vor Weihnachten geschehen wird. Dabei habe ich den Release von Ubuntu Intrepid im Oktober im Auge. Ich hoffe das die freien 3D Treiber für meine Radeon das halten was sie versprechen. :) Auch bin ich mal gespannt was es für verbesserungen in Gnome gibt. Und ob es Ubuntu endlich schafft Pulseaudio richtig einzubinden.

Upstart, das Initsystem von Ubuntu sollte auch bald mal in der neuen Version 0.5 erscheinen. Hoffentlich wird das mit Intrepid schon der Fall sein. Aber auch dann bringt das ganze nur was wenn die Initscripte auf Upstart portiert werden, damit der Rechner beim Hochfahren schneller und besser arbeitet. Ich hoffe auch dafür, dass diese Änderungen bald ihren Weg in den Mainstream finden.

SVGControl und HgSVG

Endlich war ich mal wieder fleißig. Ich habe die letzten Tage zwei Dinge von meiner Liste der Dinge die ich gerne machen will fertig gekriegt.
Dabei handelt es sich um meine erste Firefox Extension, SVGControl, welche im Grunde nur als Workaround für 2 Firefox Bugs gedacht ist. Firefox zeigt leider keine Horizontale Scrollleiste an für SVG Bilder. Außerdem funktioniert kein Zoom. Meine Extension behebt diese beiden Probleme. Hier ist auch ein kleines Bildschirmvideo, dass ich aufgenommen habe:
Und das zweite große Ding ist meine SVG Version von Mercurial Branchview. Mit meinem kleinen dWing Repo hat es keine Probleme. Aber bei dem riesigen Mercurial Repo, das insgesamt über 4.000 Revisionen enthält, gibts leider ein paar Probleme... Aber da bin ich im Moment zu faul das zu bereinigen.

So viel Zeit, so viele Ideen, aber so wenig Tatkraft

Ach es gibt so viel auf der Welt was ich alles tun könnte. So viele Ideen.
Gestern habe ich ein wenig mit Mercurial und SVG herumgespielt. Ich wollte eine art branchview in SVG machen. Hat allerdings nicht so sehr funktioniert. Und wo ich dabei war habe ich auch wieder festgestellt wie kacke es ist, dass Firefox keine Werkzeuge hat um SVGs beliebig zu vergrößern und es hat auch den Bug, das keine Scrollbalken angezeigt werden wenn das SVG zu groß ist. Ich habe vor einiger Zeit eine Extension dafür gefunden. Pan&Zoom. Habe es kurz ausprobiert aber die Extension ist Schrott. Es wird eine riesen Große Leiste angezeigt mit hässlichen Icons, die auch dann sichtbar ist wenn man sich kein SVG anschaut.
Und ich habe mir überlegt: Eigentlich kann ich sowas doch selbst machen. Warum auch nicht. Eigentlich muss ich mir nur den Quellcode der Extension anschauen und etwas modifizieren damit daraus das wird was ich will. Ich weiß, das ich es könnte. Also meine eigene Extension basteln.
Aber dann schaltet sich wieder die Depression ein. Das ständige Gefühl etwas nicht zu können. Die ständig gegenwärtige Angst davor zu versagen. Eigentlich könnte man sich doch denken das diese Angst gut ist. Das es dazu führt das man die Dinge besser macht und besser aufpasst. Oder das die Aggression gegen sich selbst dazu führt das man offensiv Dinge anpackt um mit denen fertig zu werden. Aber bei mir ist es genau das Gegenteil. Es führt bei mir zum völligen Stillstand.
Ich habe mir so viel vorgenommen. Jetzt dieses Mercurial branchview auf SVG, eine verbesserte Pan&Zoom Extension. Sowieso wollte ich dWing in Richtung Typografie verbessern wie ich es neulich erwähnt habe. Sowieso habe ich einen weiteren Entwicklungszweig für dWing aufgemacht um die neue Bilderseite zu entwickeln. Habe ein wenig gemacht dazu aber ist auch nicht viel draus geworden. Außerdem habe ich mir irgendwann vorgenommen dWing von MySQLi auf PDO umzustellen. Aber das ist auch nur eine Idee, eine Vision, ein Traum, der scheitern wird weil ich einfach nicht das habe was dazu nötig ist um es einfach durchzuziehen. I don't have what it takes!
Und so ist das einzige was ich den ganzen Tag lang mache Lost schauen und NS spielen. Und mich selbst bemitleiden und im selben Moment hassen dafür das ich einfach so bin wie ich bin.