Gunther: Stylesheets nicht disablebar in Opera (und anderen Browsern)?

Hallo werte Selfgemeinde!

Ich möchte gerne in Abhängigkeit der jeweiligen Verfügbarkeit beim Client verschiedene Stylesheets anwenden, anstatt in meinem Standard (nicht JS) Stylesheet die entsprechenden Werte zu ändern.

In Moz/FF Browsern funktioniert das auch sehr gut per

  
  document.styleSheets[0].disabled = true;  

Im Opera (9.2) hingegen funktioniert es nicht.

Fragen:

  • In welchen (halbwegs aktuellen) Browsern funktioniert es auch nicht so?
  • Welche Alternativen gibt es für diese Browser?

Ach so - idealerweise sollte die Methode XHTML Strict konform sein.
Ich würde mich auch über entsprechende Links freuen, da meine Recherche bisher keine brauchbaren Ergebnisse geliefert hat.

Vielen Dank für eure Hilfe,
Gruß Gunther

  1. Hallo Gunther

    document.styleSheets[0].disabled = true;

    
    >   
    > Im Opera (9.2) hingegen funktioniert es nicht.  
      
    Kennt Opera überhaupt `document.styleSheets`{:.language-javascript}?  
      
    
    > - In welchen (halbwegs aktuellen) Browsern funktioniert es auch nicht so?  
    > - Welche Alternativen gibt es für diese Browser?  
      
    Wie wäre es mit `document.getElementsByTagName("style")[0].disabled = true;`{:.language-javascript}?  
    Das funktioniert zumindest in meinem Opera.  
      
    [SELFHTML](http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#style) ist zwar nicht allumfassend, aber besser als nichts.  
      
      
      
    Auf Wiederlesen  
    Detlef  
    
    -- 
    - Wissen ist gut  
    - Können ist besser  
      
    - aber das Beste und Interessanteste ist der Weg dahin!
    
    1. Hallo Detlef!

      document.styleSheets[0].disabled = true;

      
      > >   
      > > Im Opera (9.2) hingegen funktioniert es nicht.  
      >   
      > Kennt Opera überhaupt `document.styleSheets`{:.language-javascript}?  
        
      Vermutlich wohl eben nicht - jedenfalls funktioniert es ja so nicht.  
        
      
      > > - In welchen (halbwegs aktuellen) Browsern funktioniert es auch nicht so?  
      > > - Welche Alternativen gibt es für diese Browser?  
      >   
      > Wie wäre es mit `document.getElementsByTagName("style")[0].disabled = true;`{:.language-javascript}?  
      > Das funktioniert zumindest in meinem Opera.  
      
      Ja, das ist zwar soweit richtig, aber ...  
        
      Das funktioniert eben nur mit 'style'. Sobald du deine externe CSS Datei per  'link' einfügst, funktioniert es wiederum nur in den Browsern, die auch `document.styleSheets[0].disabled = true;`{:.language-javascript} unterstützen.  
        
      
      > [SELFHTML](http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#style) ist zwar nicht allumfassend, aber besser als nichts.  
        
      Da stimme ich dir voll und ganz zu - nur hilft das eben leider in diesem Fall nicht weiter :-(.  
        
      Ich suche nach einer Möglichkeit, ein komplettes externes Stylesheet per JS in Opera zu deaktivieren, bzw. ich möchte wissen, ob dies überhaupt möglich ist (was ich momentan eher bezweifle). Falls das nicht möglich ist, suche ich möglichst "einfache" Alternativen.  
        
        
      Dank & Gruß  
      Gunther
      
      1. Hallo Gunther

        Das funktioniert eben nur mit 'style'. Sobald du deine externe CSS Datei per  'link' einfügst, funktioniert es wiederum nur in den Browsern, die auch document.styleSheets[0].disabled = true; unterstützen.

        Oh, dass es sich um per link eingebundene CSS-Dateien handelt war mir nicht bewusst.

        Ich suche nach einer Möglichkeit, ein komplettes externes Stylesheet per JS in Opera zu deaktivieren, ...

        Wie wäre es dann, wenn du nicht das script- sondern das link-Element eventuell über eine ID ansprichst?
        Muss es wirklich deaktiviert werden, oder wäre es eine Alternative, die passende URL zu setzen, oder zum deaktivieren zu löschen bzw. auf eine leere Resource zu setzen?

        Auf Wiederlesen
        Detlef

        --
        - Wissen ist gut
        - Können ist besser
        - aber das Beste und Interessanteste ist der Weg dahin!
        1. Hallo Detlef!

          Das funktioniert eben nur mit 'style'. Sobald du deine externe CSS Datei per  'link' einfügst, funktioniert es wiederum nur in den Browsern, die auch document.styleSheets[0].disabled = true; unterstützen.

          Oh, dass es sich um per link eingebundene CSS-Dateien handelt war mir nicht bewusst.

          Ich suche nach einer Möglichkeit, ein komplettes externes Stylesheet per JS in Opera zu deaktivieren, ...

          Wie wäre es dann, wenn du nicht das script- sondern das link-Element eventuell über eine ID ansprichst?
          Muss es wirklich deaktiviert werden, oder wäre es eine Alternative, die passende URL zu setzen, oder zum deaktivieren zu löschen bzw. auf eine leere Resource zu setzen?

          Ja, das scheint eine brauchbare Alternative zu sein.
          Übrigens kennt Opera wohl document.styleSheets, allerdings ergibt eine Abfrage auf document.styleSheets.disabled bei Opera immer 'true'!

          Im IE 7 kann man, im Gegensatz zu bspw. FF + Opera (read only), den href-Wert auch über diese Eigenschaft setzen.

          Aber per ID funktioniert es "überall" (außer in dem neuen Beta-Safari - da funktioniert JS bei mir überhaupt nicht).

          Vielen Dank für deine Tipps und deine Hilfe!

          Gruß Gunther

          1. Hi,

            Im IE 7 kann man, im Gegensatz zu bspw. FF + Opera (read only), den href-Wert auch über diese Eigenschaft setzen.

            Es gibt *2* "hrefs": Die des styleSheet-Objekts, und die des LINK-Elements.

            Natürlich sind prinzipiell beide gleich, aber offiziell ist das Schreiben nur beim LINK-Element erlaubt. FF + Opera sind hier also regelkonform.

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    2. Hi,

      Kennt Opera überhaupt document.styleSheets?

      Ja, seit 9.0! :-)

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hi,

    • In welchen (halbwegs aktuellen) Browsern funktioniert es auch nicht so?

    IIRC Safari & Konqueror.

    Generell ist vom disablen also leider Abstand zu nehmen.

    • Welche Alternativen gibt es für diese Browser?

    Einfach beliebige Stylesheets nachträglich auswechseln (also bei LINK-Elementen den URL wechseln).
    Ebenso möglich: Gezielt bestimmte Regeln überschreiben (s. Coding: CSS-Regeln (& Stylesheets) auslesen & ändern).

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!