在<head>标签中动态添加链接样式表

17

如何将链接样式表引用添加到文档的头部?

我找到了这段代码,但它在某些浏览器中不起作用,会导致我的IE7崩溃:

var ss = document.createElement("link");
ss.type = "text/css";
ss.rel = "stylesheet";
ss.href = "style.css";
document.getElementsByTagName("head")[0].appendChild(ss);

感谢


1
嗯,我以前用过这种方法,在IE7中一切都很顺利。 - I.devries
你的代码在我的IE6和IE7中可以运行。可能是页面的其他部分引起了问题吗? - Dan Lew
好的,我稍后会与我的同事再次核实,谢谢您的关注。 - belaz
汤姆和其他人,我认为其他脚本可能会干扰,但没有警告,也没有错误信息。如果是这种情况,我该怎么办?删除这个问题吗? - belaz
这个方法在Firefox、IE 6、7和8中对我来说都很好用。 - Michael Butler
尝试:document.body.getElementsByTagName("head")[0].appendChild(ss); - Jack
3个回答

10

虽然 Internet Explorer 会添加重排,但它仍然支持 innerHTML,以下代码可以正常工作:

var headHTML = document.getElementsByTagName('head')[0].innerHTML;
headHTML    += '<link type="text/css" rel="stylesheet" href="style.css">';
document.getElementsByTagName('head')[0].innerHTML = headHTML;

有趣的是,你的代码只在Firefox上运行。 - belaz
我还没有测试过这个,你的意思是说在Internet Explorer中不能用吗? - Alagu
啊,那太糟糕了,我的回答不应该得到一票。 - Alagu
它适用于Firefox,这仍然是一个很好的答案。 - belaz
1
我没有我的理论任何证据,但我认为修改文档的HEAD元素的innerHTML不是一个好主意。 - Michael Butler
它在Chrome上运行。 - Shaybc

2
在IE中,您可以尝试使用createStyleSheet方法?它需要一个URL作为参数。但是我不知道在FF / Chrome中是否有等效的方法。

-5

这只是一个简单的交叉引用 JavaScript 错误。祝你有美好的一天。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接