This doesn't work in IE8. I think it's the innerHTML that causes the problem. How to solve?
// jQuery plugin
(function( $ ){
$.fn.someThing = function( options ) {
var d = document,
someThingStyles = d.createElement('style');
someThingStyles.setAttribute('type', 'text/css');
someThingStyles.innerHTML = " \
.some_class {overflow:hidden} \
.some_class > div {width:100%;height:100%;} \
";
d.getElementsByTagName('head')[0].appendChild(someThingStyles);
});
};
})( jQuery );
You should check out the CSSOM (CSS Object Model) spec - http://dev.w3.org/csswg/cssom/
You will probably be interested in the
cssText
property ofCSSRule
objects - http://dev.w3.org/csswg/cssom/#dom-cssrule-csstextIf you weren't using jquery, IE before version 9 writes to a style element by assigning a css string to the styleelement.styleSheet.cssText.
Other browsers (including IE9+) let you append text nodes to the element directly.
jQuery
Since you're already using jQuery, use:
Pure JavaScript
If you don't want to use jQuery, you have to first append the
<style>
element, then use thestyle.styleSheet.cssText
property (IE-only!!).