如何使用Javascript创建<style>标签?

我正在寻找一种<style>使用JavaScript 标记插入HTML页面的方法。

到目前为止,我发现的最好方法是:

var divNode = document.createElement("div");
divNode.innerHTML = "<br><style>h1 { background: red; }</style>";
document.body.appendChild(divNode);

这在Firefox,Opera和Internet Explorer中有效,但在Google Chrome中不起作用。<br>IE的前面也有点难看

有人知道创建<style>标签的方法吗

  1. 更好

  2. 使用Chrome吗?

或许

  1. 这是我应该避免的非标准事情

  2. 三种运行良好的浏览器都很棒,到底谁在使用Chrome?

EvaDavaid2020/03/23 10:18:32

一切都很好,但是要使styleNode.cssText在由Javascipt创建的节点的IE6中工作,需要在设置cssText之前将节点附加到文档中;

进一步的信息@ http://msdn.microsoft.com/en-us/library/ms533698%28VS.85%29.aspx

卡卡西Near2020/03/23 10:18:32

你写了:

var divNode = document.createElement("div");
divNode.innerHTML = "<br><style>h1 { background: red; }</style>";
document.body.appendChild(divNode);

为什么不呢?

var styleNode = document.createElement("style");
document.head.appendChild(styleNode);

因此,您可以轻松将CSS规则附加到HTML代码:

styleNode.innerHTML = "h1 { background: red; }\n";
styleNode.innerHTML += "h2 { background: green; }\n";

...或直接到DOM:

styleNode.sheet.insertRule("h1 { background: red; }");
styleNode.sheet.insertRule("h2 { background: green; }");

我希望这可以在除旧版浏览器之外的所有地方使用。

绝对可以在2019年在Chrome 中使用。

DavaidStafan2020/03/23 10:18:32

一个适用于所有浏览器的示例:

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