2011-07-09 24 views
14

私はスタイル要素を作成しており、それにCSSを入れる必要があります。コードの下クロム、SafariとFFで動作しますが、IE8に失敗:IE8でIE8内の<style>要素のinnerHTMLを変更する

var styleElement = document.createElement("style"); 

styleElement.type = "text/css"; 

styleElement.innerHTML = "body{background:red}"; 

document.head.appendChild(styleElement); 

それはinnerHTMLの部分に来るとき、コードが失敗します。私はやってみた:

var inner = document.createTextNode("body{background:red}"); 

styleElement.appendChild(inner); 

しかし、これはまた、 "メソッドまたはプロパティのアクセスへの予期しない呼び出し"で失敗します。 回避策や修正を探しています。

答えて

14

使用.styleSheet.cssText

NOTEを使用してみてください:これは、個々の要素のスタイルを変更するに比べIE8で本当に遅いのようです。

IEで動的にスタイルシートを修正する方法はありますか?

これはIE8で遅い:

styleElement.styleSheet.cssText = "body{background:red}"; 

これもIE8で遅い(修正するスタイルオブジェクトは頭の中で1番目のスタイル要素であると仮定):

document.styleSheets[0].cssText = "body{background:red}"; 

これはIE8で高速:

document.body.style.background = "red"; 
-3

styleElement.innerText

+2

Nopeこれは、 "不明なランタイムエラー"と同じ失敗します。 – TheFuzzball