Hallo,
der Hintergrund meiner Frage ist die native Vefuegbarkeit von SVG im kuenftigen Firefox 1.5. Bereits seit Deer Park Alpha 1 ueber Alpha 2 bis zur aktuellen Version Firefox 1.5 Beta 1 ist SVG aktiviert (laenger schon in den Mozilla-Nightly-Builds).
Ein Blick ueber "about:config" zeigt die Voreinstellung "svg.enabled" mit zugehoerigem Wert true.
Da ich gerade allerlei Techniken des Mozilla-XML-DOM im SVG-Kontext ausprobiere -- was durchaus passabel funktioniert -- waere auch eine vorherige Abfrage des nativen SVG-Renderers hilfreich (die DOM-Methoden funktionieren zwar auf Mozilla-Level und werden auch separat auf Existenz geprueft, aber die Ergebnisse sollen letztlich in den SVG-DOM-Baum wandern).
Firefox bringt eine JS-Bibliothek prefcalls.js mit, die Funktionen fuer Zugriffe auf Voreinstellungen enthaelt. Darueber und mit weiteren Mozilla-Dev-Tutorials bin ich zu diesem Abfragecode gelangt:
var prefs,svgen;
// 1. Variante:
prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch(null);
svgen=prefs.getBoolPref("svg.enabled");
alert(svgen); // undefined
// 2. Variante:
prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("svg");
svgen=prefs.getBoolPref("enabled");
alert(svgen); // undefined
Beide bringen nur undefined, aber immerhin keine Fehler in der JS-Konsole.
Frage: Hat jemand solche Abfragen bereits erfolgreich praktiziert?
Eine (vermutlich brauchbarere) Alternative habe ich mir ausgehend von der erfolgreichen Abfrage des MIME-Types image/svg+xml bei gleichzeitiger Abwesenheit eines zugehoerigen Plug-ins ueberlegt:
if(window.ChromeWindow && navigator.mimeTypes &&
navigator.mimeTypes["image/svg+xml"] &&
!navigator.mimeTypes["image/svg+xml"].enabledPlugin)
{
// Code fuer SVG-enabled Mozilla ...
}
else ...
Damit wird unter Firefox 1.0x (mit/ohne Plug-in) und Nicht-Mozilla-Browsern der else-Zweig erreicht und FF 1.5b und Co. werden bedient. Dennoch wuerde mich mal die Sache mit den Preferences interessieren, weil "svg.enabled" --> true genau die gesuchte Information darstellt.
MfG, Thomas