Munshta: IE:Inhalt von<STYLE>dynamisch ändern;appendCh./innerH. funzt ned

hi,
ich habe gehört, wenn man eine Datei per AJAX anfordert, soll man gleich das dateispezifische Stylesheet mitversenden und nicht extra anfordern, weil dann 2mal auf den Server gewartet werden muss.

So weit so gut: Ich trenne meinen Reponse durch \ (in JS dann halt '\', daran liegt's nicht :-) , funzt ja auch in allen anderen Browsern) - der 1. Teil CSS und der 2. HTML. Dann weise ich dem Element mit der ID "datasheet" per je nach Test mit .innerHTML = Styler oder .appendChild(document.createTextNode(Styler)) zu. In allen Browsern außer unserem Lieblingsfall MSIE funktioniert alles.

Nur der Internet Explorer sieht innerHTML einen Runtimefehler, bei appendChild() einen unerwarteten Aufruf und sogar wenn ~~~javascript document.getElementById('datasheet').parentNode.removeChild(document.getElementById('datasheet'));
document.getElementsByTagName('head')[0].innerHTML += '<style type="text/css" id="datasheet">'+Styler+'</style>';

  
Ich finde also einfach keinen Weg, im IE Stylesheets zu erweitern und hoffe, dass ihr mich mit euren Ansätzen zu einer Sinnvollen Lösung für den IE "inspirieren" ;-) könnt. Danke i.V.  
lg Munshta.  
  
Tags: Style, JavaScript, innerHTML, Stylesheet dynamisch ändern, Stylesheet ändern, Stylesheet;
  1. Hi,

    Dann weise ich dem Element mit der ID "datasheet"

    Was für ein Element ist das - STYLE?

    per je nach Test mit .innerHTML = Styler oder .appendChild(document.createTextNode(Styler)) zu. In allen Browsern außer unserem Lieblingsfall MSIE funktioniert alles.

    Nur der Internet Explorer sieht innerHTML einen Runtimefehler,

    Wenn obiges - dann natürlich; dass innerHTML für STYLE im IE read-only ist, kann man doch nachlesen.

    bei appendChild() einen unerwarteten Aufruf

    Was willst du wo einfügen?
    Drücke dich bitte mal konkret aus.

    und sogar wenn ~~~javascript

    document.getElementById('datasheet').parentNode.removeChild(document.getElementById('datasheet'));

    document.getElementsByTagName('head')[0].innerHTML += '<style type="text/css" id="datasheet">'+Styler+'</style>';

      
    Natürlich, innerHTML ist auch für HEAD read-only.  
      
    
    > Ich finde also einfach keinen Weg, im IE Stylesheets zu erweitern  
      
    Die Eigenschaft [cssText](http://msdn.microsoft.com/en-us/library/ms533698(VS.85).aspx) eines STYLE-Elements sollte sich beschreiben lassen.  
      
    MfG ChrisB  
      
    
    -- 
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    
    1. hi,

      Was willst du wo einfügen?
      Drücke dich bitte mal konkret aus.

      Ich habe:
       - Den Quelltext eines Sheets als String in var Styler (z.B. "a, b {color:green;}\ni {display:block;}")
       - Ein STYLE-Element mit CSS-Code als Inhalt

      Ich will:
       - Dem Styleelement als Inhalt statt dessen aktuellen Inhalt den Inhalt der Variable Styler zuweisen.

      Ich finde also einfach keinen Weg, im IE Stylesheets zu erweitern

      Die Eigenschaft cssText eines STYLE-Elements sollte sich beschreiben lassen.

      Danke. Alle meine Probleme restlos gelöst:
      document.getElementById('datasheet').styleSheet.cssText = Styler;

      thx&lg Munshta.