Montag, 4. August 2008

Das Augenblickshoroskop für iGoogle

Für Vektorgraphiken gibt es seit bald einer Dekade zwei Standards im Web (wenn wir einmal die eher für den Druck gedachten Formate PostScript und pdf ausser Acht lassen): Einerseits die Scalable Vector Graphics (SVG), andererseits die mit der Firma Microsoft verknüpfte Vector Markup Language (VML), deren Spezifikation im Jahre 1998 beim W3C eingereicht - und abgelehnt wurde. Alle Browser ausser dem Internet Explorer bemühen sich um das SVG-Format, Microsoft selbst setzte bislang jedoch auf VML und hatte offenbar keine Lust zu Parallelentwicklungen zweier Formate. Mit neuen Browserversionen soll sich das ändern und auch SVG unterstützt werden. Aber was macht man bis dahin?

Eine gute Idee hatte Kyle Scholz mit seinem in JavaScript geschriebenen Modul SVG2VML. Man schreibt die Graphikanweisungen als DOM-Methodenaufrufe zur Erzeugung von SVG-Elementen. Aber eine Redefinition für VML-fähige Browser ruft im Internet Explorer den äquivalenten Code zur Erzeugung VML-ELementen auf.

Ich habe sein Modul in der Version 1.1 als Grundlage genommen, musste es jedoch noch ausbauen, um Horoskopgraphiken damit erzeugen können. Eine Testseite zeigt die Reskalierbarkeit der Graphik und auch den generierten HTML-Code (die Reskalierbarkeit wird nur dadurch begrenzt, dass die Planeten- und Tierkreiszeichensymbole als GIF-Bilder fester Grösse mitverwendet werden).

Mit diesem Modul lässt sich ein Augenblickshoroskop als Google-Gadget programmieren. Ein Anfang ist gemacht - es fehlen im wesentlichen noch die Präferenzen für den Ort, denen ich mich nach meinem Urlaub zuwenden werde.

Und so sieht es aus:




Horoskop zu iGoogle hinzufügen: Zu iGoogle hinzufügen

Einige Erfahrungen bei der Gadget-Entwicklung:

  • Auf dem Server entwickeln

    Mir ist kein PC-Programm bekannt, mit dem ein Gadget isoliert getestet werden kann, und es ist auch sinnvoller, das Gadget gleich dort zu testen, wo es erscheinen soll: In der iGoogle-Startseite. Daher empfiehlt es sich, den Quellcode des Gadgets gleich auf dem Server zu entwickeln. Sehr angenehm geht das mit dem Nurtexteditor UltraEdit, der eine integrierte FTP-Unterstützung bietet: Ich kann die Gadgets im Editor bearbeiten und sichern, als wären es lokale Dateien. Beim Sichern erfolgt automatisch der Upload auf den Server.

  • Pufferung ausschalten

    Ganz wichtig - die ersten Stunden habe ich damit verschwendet, während der Entwicklung veralteten, nämlich gepufferten HTML-Code zu analysieren. iGoogle puffert den Gadget-Content. Die Pufferung lässt sich ausschalten, indem man das sogenannte Developer Gadget auf eine neue iGoogle-Seite aufnimmt und auf dem Weg über dieses Developer Gadget das neue, zu entwickelnde Gadget hinzufügt, wobei man das Flag für Pufferung explizit zurücksetzt.

  • Dynamische Scriptelemente statt XMLHttpRequest verwenden

    Da das Gadget nur in einem von Google gehosteten Context auftritt, kann man das XMLHttpRequest-Objekt nicht mit der üblichen Unbefangenheit verwenden: Die Same-Origin-Policy (SOP) verhindert die Beschaffung von Daten von einem anderen als dem Google-Server. Wenn man dies dennoch benötigt, müssen die Daten mithilfe eines Scriptelements beschafft werden, das zum Ladezeitpunkt mit JavaScript-Mitteln hinzugefügt wird. Einen schönen Artikel dazu, wie das gemacht wird und was dabei zu beachten ist (z.B. die möglicherweise ungewollte Pufferung von JavaScript-Ressourcen im Browser und wie man sie umgehen kann), schrieb Jan Wolter in http://unixpapa.com/js/dyna.html .

Keine Kommentare :