m2

style 要素を動的に生成する

普通に考えればこんな感じ。

    var style=document.createElement('style');
    style.setAttribute('type', 'text\/css');
    style.innerHTML='…';
    document.getElementsByTagName('head')[0].appendChild(style);

が、IE6 では style 要素の innerHTML プロパティは readOnly のようで、3行目でエラーになります。

「エラー:未知の実行時エラーです。」という、よくわからないエラーメッセージです。
これを以下のようにして回避することができました。

    var wrap=document.createElement('div');
    // 最初に style でないノードが無いと style が生成されない
    wrap.innerHTML='a<style type="text\/css">…<\/style>';
    document.getElementsByTagName('head')[0].appendChild(wrap.lastChild);

あまりのバッドノウハウぶりに泣けてきます。

  • -

普通は addRule(IE) や insertRule(Mozilla) を使います。

  • -

script 要素も同じみたいです。

Thousand Years - innerHTMLでscriptする
http://d.hatena.ne.jp/shogo4405/20061207/1165479339