Style

Assistant

Startseite
Screenshot
Kurzanleitung
Download
Kurse & Infos
>Tipps & Tricks<
Unterstützer
TMXtensions
?Freeware!
About TM
E-Mail
Made with CSS
Valid HTML 4.01!
Stand: 07.12.2002

Tipps & Tricks – Tipp 91
Zur Übersicht

91. Adobe SVG Viewer und Mozilla 1.0 (16.06.2002)

Bis zur Preview-Version Mozilla 0.9.9 war es problemlos möglich, SVG-Dokumente mittels object-Element HTML 4-konform einzubinden und über das SVG-PlugIn anzuzeigen. Ab Release Candidate 1 (RC1) und auch in der finalen Version 1.0 stürzt Mozilla dabei reproduzierbar ab:

MOZILLA verursachte einen Fehler durch eine ungültige Seite
in Modul NECKO.DLL bei 0167:60955c38.

Die offizielle Aussage vom Mozilla-Team ist die, dass Adobe den Viewer über ein noch unfertiges ("unfrozen") API anspricht, welches nach Version 0.9.9 geändert wurde.

Der Versuch, SVG-Dokumente nicht über

<object data="..." width="..." height="..." type="image/svg+xml">

sondern mittels

<iframe src="..." width="..." height="...">

einzubinden, scheint erstaunlicherweise mit Mozilla 1.0 sowie auch mit Vorabversionen < 1.0 und Netscape 6.x sowie im Internet Explorer zu funktionieren.

Das lässt sich vor allem bei der Server-seitigen Generierung von SVG-Dokumenten ausnutzen, z. B. durch diese PHP-Abfrage:


      $ua=$HTTP_SERVER_VARS["HTTP_USER_AGENT"];
      if(strstr($ua,"Gecko") && !strstr($ua,"rv:0."))
      {
        // Ausgabe von HTML-Code für iframe
        print "<iframe src=\"datei.svg\" ...>...</iframe>\n";
      }
      else
      {
        // Ausgabe von HTML-Code für object
        print "<object data=\"datei.svg\" ...>...</object>\n";
      }
      
Client-seitig ist auch eine auf JavaScript basierende Abfrage denkbar:


      var ua=navigator.userAgent;
      if(ua.indexOf("Gecko")!=-1 && ua.indexOf("rv:0.")==-1)
      {
        // Ausgabe von HTML-Code für iframe
        document.write("<iframe src=\"datei.svg\" ...>...<\/iframe>");
      }
      else
      {
        // Ausgabe von HTML-Code für object
        document.write("<object data=\"datei.svg\" ...>...<\/object>");
      }
      
Somit erhalten auf der Gecko-Rendering-Engine basierende Browser, die keine 0.x-Kennung liefern (Mozilla, Galeon, Netscape 7.x, ...), die iframe-Version und andere Browser (IE, Netscape 6.x, Opera) die bewährte object-Zuweisung. Die hier nochmals als Beispiel 91 angegebene Server-seitige Anwendung MSpec::SVG bringt zumindest Mozilla 1.0 unter Windows 98 und 2000 beim Aufruf des Adobe SVG-PlugIns nicht mehr zum Absturz. Letztlich ist natürlich Adobe gefordert, ein verbessertes PlugIn anzubieten, welches derartige Workarounds nicht mehr erfordert.