使用JS动态创建style标签的通用办法

森森 2009-12-03 45 views

处于某些目的,我们需要在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);
 }

Tags: , , / Posted in JS
欢迎订阅: Google Reader | 鲜果 | 抓虾 | 九点 | QQ邮箱 | 有道 | 更多

评论暂缺

  • (Required)
  • (Required, will not be published)

友情链接

Design By CKSKY TEAM VERSION 3.0 他说博客不用备案... © Copyright 2010 All Rights Reserved