2011-04-15 108 views
0

我试图使用javascript添加样式标签页

var style = document.createElement("style"), 
style.innerHTML = ".firstChildTest div:first-child {width: 2px;}"; 

一些样式添加到一个页面,但试图使用innerHTML风格元素时ie6-8被抛出一个错误。我也得到了同样的错误使用

style.append(document.createTextNode(".firstChildTest div:first-child {width: 2px;}")); 

如何注入样式到样式元素在ie?

回答

0

在这里看到了答案:How do you copy an inline style element in IE?

function copy_style(style_text) {  
    var tmp_div = document.createElement('div'); 
    tmp_div.innerHTML = '<p>x</p><style type="text/css">' + style_text + '</style>'; 

    return tmp_div.getElementsByTagName('style')[0]; 
} 

请注意,您需要在tmp_div的innerHTML的<p>标签。没有它,IE不接受样式元素。

+0

很奇怪的是,能够创建一个新的样式元素,你不能做任何事情。欢呼的答案 – wheresrhys 2011-04-15 14:53:00

+0

@wheresrhys您可以将生成的样式DOM元素插入到文档树中。 – lambacck 2011-04-15 15:39:03

+0

我的意思是说,document.createElement(“样式”)是一个奇怪的怪癖 - 你的功能很好。干杯 – wheresrhys 2011-04-16 16:05:27

0

#9之前的IE无法使用childNodes将文本添加到样式(或脚本或选项)元素, 样式应该位于html文档的头部。

function addStyle(str){ 
    var el= document.createElement('style'); 
    if(el.styleSheet) el.styleSheet.cssText= str; 
    else{ 
     el.appendChild(document.createTextNode(str)); 
    } 
    return document.getElementsByTagName('head')[0].appendChild(el); 
}