Mozilla 1.0 und Adobe SVG Viewer (Workaround)
Thomas Meinike
- browser
Hallo,
wer sich mit SVG und dem Adobe SVG Viewer 3.0 befasst, wird wissen, dass Mozilla ab RC 1 und auch in der finalen Version 1.0 beim Zugriff auf das SVG-PlugIn abstuerzt. Die offizielle Aussage vom Mozilla-Team ist die, dass Adobe den Viewer ueber ein noch unfertiges ("unfrozen") API anspricht, welches nach 0.9.9 geaendert wurde.
Ich habe nun mal probiert, SVG-Dokumente nicht ueber <object data="..." width="..." height="..." type="image/svg+xml"> sondern mittels <iframe src="..." width="..." height="..." type="image/svg+xml"> einzubinden und das funktioniert erstaunlicherweise mit Mozilla 1.0 sowie auch mit < 1.0 und Netscape 6.x. Der IE zeigt dagegen den XML-Baum im IFrame an.
In meinem Server-seitigen Projekt MSpec::SVG (eigentlich eine Intranetanwendung) ist nun diese Abfrage via PHP enthalten:
$ua=$HTTP_SERVER_VARS["HTTP_USER_AGENT"];
if(strstr($ua,"Gecko") && strstr($ua,"rv:1."))
{
// Code fuer iframe
}
else
{
// Code fuer object
}
Das scheint (unter Windows 2000 und 98) ganz passabel zu funktionieren: http://ktd.et.fh-merseburg.de/~tm/mspec/. Aeltere Mozillas und Netscape 6.x-Browser erhalten das bewaehrte object, deshalb die zusaetzliche Abfrage auf "rv:1.".
Natuerlich ist eigentlich Adobe gefordert, aber ich bin doch ganz froh, dass mir nun Mozilla 1.0 nicht mehr dauernd abraucht bzw. ich mal von 0.9.9 wegkomme.
BTW: Welchen User-Agent-String liefert die Preview von Netscape 7.0, die ja auch auf Mozilla RC 1 basiert?
MfG, Thomas
PS: Invalide embed-Mauscheleien fuer Netscape 4.x sind in diesem Projekt nicht angedacht.
Hallo Thomas,
deine Lösung funktioniert einwandfrei. Leider nur im native Mozilla. Unter Linux nutze ich Galeon 1.2.5 http://galeon.sf.net, welcher seinerseits wiederum den Mozilla1.0 nutzt. Allerdings meldet er sich anders als der Mozilla: Mozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/0 und crasht demnach, weil er ja das <object> vorgesetzt bekommt. Allerdings gibt es mehrere Native-GUI-Projekte (zb. k-meleon für Windows: http://kmeleon.org/, welcher zur Zeit etwas eingeschlafen ist) so das du theoretisch die Useragents der geckoembedding Browsers ebenfalls in deine Abfrage integrieren must.
Gruß Herbalizer
Hallo,
deine Lösung funktioniert einwandfrei. Leider nur im native Mozilla. Unter Linux nutze ich Galeon 1.2.5 http://galeon.sf.net, welcher seinerseits wiederum den Mozilla1.0 nutzt. Allerdings meldet er sich anders als der Mozilla: Mozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/0 und crasht demnach, weil er ja das <object> vorgesetzt bekommt.
Danke fuers Feedback. Ich habe zuerst einfach nur auf Gecko geprueft, was auch mit Netscape 6.x funktioniert hat.
Ich habe die Abfrage jetzt mal so geaendert:
if(strstr($ua,"Gecko") && !strstr($ua,"rv:0."))
Damit sollte auch Dein Galeon den iframe erhalten (sofern das mit diesem Beta 3.0-PlugIn fuer Linux ueberhaupt klappt).
MfG, Thomas
Hallo,
Danke fuers Feedback. Ich habe zuerst einfach nur auf Gecko geprueft, was auch mit Netscape 6.x funktioniert hat.
Ich habe die Abfrage jetzt mal so geaendert:
if(strstr($ua,"Gecko") && !strstr($ua,"rv:0."))
Klappt. Ich hab leider nicht die Useragentstrings der alten Galeons im Kopf, aber ich vermute mal das die Null überall gleich ist. Aber ab Galeon 1.2.0 nutzt der Galeon Mozillas größer 0.9.9
Kleine Liste was noch an NativeGUI-Browsern exisitert: http://www.mozilla.org/projects/distros.html bzw. http://www.mozilla.org/projects/embedding/examples/index.html, nicht zu vergessen die Compuserve- und demnächst AOL-Zugangssoftware.
Das beste wird wohl sein die Useragentstrings direkt bei den Anbietern zu erfragen.
Gruß Herbalizer
hi
BTW: Welchen User-Agent-String liefert die Preview von Netscape 7.0, die ja auch auf Mozilla RC 1 basiert?
das einfachste wäre evtl. zusätzlich die Build-ID abzufragen, wenn diese dann nach dem Release von 0.9.9 liegt, bekommt er den <iframe>. Achtung, selbstcompilierte Versionen haben manchmal keine brauchbare Build-ID!
Grüße aus Bleckede
Kai