2011-05-31 56 views
2

我已經制作了一個小書籤來將自定義CSS文件添加到任何頁面。在FF和Safari中運行良好,但我無法在IE9中運行。用於將CSS添加到IE9的小書籤的問題

什麼也沒有發生在DOM監督員,和我沒有得到任何錯誤... :(我曾嘗試直接在控制檯執行它,但也有同樣的問題...

任何幫助表示讚賞。

這是我的代碼:

(function(d,u){ 

if(d.createStyleSheet) { 
    d.createStyleSheet(u); 
} else { 
    var styles = "@import url('"+u+"');", 
     css=d.createElement('link'); 
    css.rel='stylesheet'; 
    css.href='data:text/css,'+escape(styles); 
    d.getElementsByTagName("head")[0].appendChild(css); 
} 

}(document, "\\vmware-host\Shared%20Folders\css.css")) 

這是相同的代碼爲書籤...

javascript:(function(d,u){if(d.createStyleSheet){ d.createStyleSheet(u); }else{var styles = "@import url('"+u+"');",css=d.createElement('link');css.rel='stylesheet';css.href='data:text/css,'+escape(styles);d.getElementsByTagName("head")[0].appendChild(css);}}(document, "\\vmware-host\Shared%20Folders\")) 

編輯當我直接將它放到URL中時,它告訴我IE9已經修改了頁面來防止跨站點腳本:/任何解決方案? (和它除掉的JavaScript:部分和Bing的吧:/)

+0

只是一個猜測:使用'style'標籤而不是你的'link'標籤。 – jantimon 2011-05-31 08:09:02

+0

@Ghommey:你的意思是'css = d.createElement('style'); css.innerHTML =「@ import url('」+ u +「');」' – mplungjan 2011-05-31 08:14:53

回答

1

嘗試這 - 正如ghommey所建議的那樣 - 如果由於不同的來源而導致問題出現,那麼IE會加強安全性(因爲css可以做很多事情是有意義的),您將需要使用代理。這就是說:看一看IE9 Not applying linked style sheets

(function(d,u){ 

if(d.createStyleSheet) { 
    d.createStyleSheet(u); 
} else { 
    var css=d.createElement('style'); 
    css.setAttribute("type","text/css"); 
    css.appendChild(document.createTextNode("@import url("+u+")")); 
    d.getElementsByTagName("head")[0].appendChild(css); 
} 

}(document, "http://server/some.css")) 

記住,如果你正在使用本地文件逃脫反斜槓 - 例如服務器路徑 \\需要爲\\\\

+0

你的代碼有錯誤tbere是一個「)」在'document.createTextNode(etc ..'後面丟失了,但是我糾正了它,並且它仍然適用於每個瀏覽器,但是在IE9中。 – meo 2011-05-31 08:36:03

+0

@meo請參閱更新 – mplungjan 2011-05-31 09:04:59

+0

奇怪的原因是爲什麼這個工作呢? www.phpied.com/user-stylesheet-in-ie/ – meo 2011-05-31 09:08:34

1

我在IE8和Firefox測試這一點,只是改變了HREF定義:

(function(d,u){ 
    if(d.createStyleSheet) { 
     d.createStyleSheet(u); 
    } 
    else { 
     var css = d.createElement('link'); 
     css.rel = 'stylesheet'; 
     css.href = u; 
     d.getElementsByTagName("head")[0].appendChild(css); 
    } 
}(document, "test.css")) 

小書籤:

javascript:(function(d,u){ if(d.createStyleSheet) { d.createStyleSheet(u); } else { var css = d.createElement('link'); css.rel = 'stylesheet'; css.href = u; d.getElementsByTagName("head")[0].appendChild(css); }}(document, "test.css")) 
+0

不起作用... :(當我在URL中輸入時它告訴我IE9修改了頁面以防止corss網站腳本:( – meo 2011-05-31 08:38:31

+0

我想它適用於我,因爲我使用了一個來自同一個域的css :(對不起。 – aorcsik 2011-05-31 08:39:45

+0

其確定感謝您的研究...很想得到解決這個問題。 – meo 2011-05-31 08:40:52