2012-04-27 3 views
2

FirefoxとChromeを使用して、<style>要素を作成し、JavaScriptからすべて入力することができます。過去にIE(IE6のような)でさまざまな状況でこれをやったことを誓うことができました。しかし、今私はIEを得ることができません(7または8; 9を試していない)私はまったくそれを設定してください。<style>要素の作成と移植

私はこのcssTextプロパティの想起を持っていますが、不思議なことにMSDNドキュメンテーションサイトに何が起こったのか誰でも知っていますか?)MSDNドキュメントはスタイルシートAPIの一部としてのみ表示されます。 DOM要素の事柄として。

したがって、Internet Explorerで<style>要素を作成して設定することは可能ですか?

Hereは、次のjQueryコードで、些細なjsfiddle例です:Firefoxの、クロム、およびオペラで

$('head').append($('<style/>', { html: 'div { color: red; }' })); 

作品罰金。 (私はそれでだながら、私はAndroidとiOS試してみてくださいね。)

編集 —はい、私の代わりに「HTML」の「テキスト」を設定しようとしました、そして、それは助けにはなりません。 jQueryを使わずに "innerText"を設定しようとしても動作しません。

+1

この方法をお探しでしたか:http://stackoverflow.com/questions/436710/element-appendchild-chokes-in-ie? –

答えて

3

ここまではこれまでのやり方です。私はかなりまっすぐに私のいくつかの古いコードのうち、これをコピーしたが、私の記憶が正しければ、styleSheetプロパティはIEのみで使用され、あなたが述べたようにされ、それはあなたが使用する必要がありますcssText

var styleElem = document.createElement("style"); 
styleElem.type = "text/css"; 
styleRules = document.createTextNode(".someClass { color: red; }"); 
if(styleElem.styleSheet) { 
    styleElem.styleSheet.cssText = styleRules.nodeValue; 
} 
else { 
    styleElem.appendChild(styleRules); 
} 
document.getElementsByTagName("head")[0].appendChild(styleElem);​ 

working example(最新のChromeとIE6でテスト済み)

+0

はい、そうだと思います。 doh。私はそれを試してみましょうと秒で受け入れる。 – Pointy

+0

ああ、私はjQueryのバグを記録すると思います – Pointy

+0

@Pointy - うん、jQueryはブラウザの矛盾を正規化するように設計されているので、これは便利な追加方法だと思う。 –