使用JS动态创建style标签的通用办法
处于某些目的,我们需要在Javascript运行中创建一个style标签,并写入我们期望的css内容。
按照常规可以通过DOM操作来实现:
var css = document.createElement(’style’);
css.setAttribute(‘type’, ‘text/css’);
var css_text = document.createTextNode(‘div{width:200px;height:100px;background:#ccc;}’);
css.appendChild(css_text);
document.getElementsByTagName(‘head’)[0].appendChild(css);
好吧,运行试一试!
结果:FF下正确显示,IE下报错,查询了一下资料,原来PPK也说出了这个问题http://www.quirksmode.org/bugreports/archives/2006/01/IE_wont_allow_documentcreateElementstyle.html;
具体产生原因不明,等待高手解答,偶在这也只有提供通用的办法:
来自这篇文章http://www.phpied.com/dynamic-script-and-style-elements-in-ie/
将上面代码修改如下:
var css = document.createElement(’style’);
css.setAttribute(‘type’, ‘text/css’);
var css_str = ‘div{width:200px;height:100px;background:#ccc;}’;
var css_text = document.createTextNode(css_str);
css.appendChild(css_text);
/**Cross-Browser**/
if(css.styleSheet){ //For IE
css.styleSheet.cssText = css_str;
}else {
var css_text = document.createTextNode(css_str);
css.appendChild(css_text);
}


欢迎订阅:
最新评论
热评文章