Thomas Meinike: Mozilla-Preferences abfragen

Beitrag lesen

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