2011-04-15 105 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); 
}