[JavaScript] JavaScriptからスタイルを追加する際の注意点

JavaScript から style要素 を createElement してスタイル操作する際の注意点です。
(※ document.styleSheets を操作する方法もありますが、今回は単純に head要素 に追加する例です)

前述のことをする場合は次のようなコードになりますが、そのままでは IE8 でエラーが出ます。

addCssRule : function ( selector, declarations ) {
	var style = document.createElement('style');
	style.setAttribute('type', 'text/css');
	style.innerHTML += selector + '{' + declarations + '}';
	document.getElementsByTagName('head')[0].appendChild(style);
}

IE8 でも動作するようにするためには大凡次のようなコードになります。
(※結構はしょってるのでコピペで使用するのはおすすめしません)

addCssRule : function ( selector, declarations ) {
	if ( navigator.userAgent.indexOf('MSIE') != -1 && navigator.userAgent.indexOf('Trident/4.') != -1 ) {
		document.styleSheets[0].cssText += selector + '{' + declarations + '}';
	} else {
		var style = document.createElement('style');
		style.setAttribute('type', 'text/css');
		style.innerHTML += selector + '{' + declarations + '}';
		document.getElementsByTagName('head')[0].appendChild(style);
	}
}

今更感が否めないエントリですが、滞るよりはいいので^^;

投稿日付 :

カテゴリー : CSS | JavaScript

トラックバックURL

http://mashimonator.weblike.jp/mt/mt-tb.cgi/238

コメント投稿フォーム