如何正确使用CSSStyleSheet.insertRule()?

我不知道我在哪里错了:/。当我运行这段代码时,我得到的只是一个空白元素。我似乎无法让insertRule方法执行任何操作(甚至不会产生错误)。我想念什么吗?

<!DOCTYPE html>

<html>

<head>

<title>Test</title>

</head>

<body>

<script>

var sheet = (function() {

// Create the <style> tag

var style = document.createElement("style");

// WebKit hack

style.appendChild(document.createTextNode(""));

// Add the <style> element to the page

document.head.appendChild(style);

return style.sheet;

})();

sheet.insertRule("\

#gridContainer {\

width: 100%;\

height: 100%;\

}\

", 0);

</script>

</body>

</html>

回答:

这有点令人困惑,但是您的代码确实可以工作,只是您看不到返回的XML树中插入的规则。

为了验证您的代码是否有效,您可以执行两个测试:

var style = (function() {

// Create the <style> tag

var style = document.createElement("style");

// WebKit hack

style.appendChild(document.createTextNode(""));

// Add the <style> element to the page

document.head.appendChild(style);

console.log(style.sheet.cssRules); // length is 0, and no rules

return style;

})();

style.sheet.insertRule('.foo{color:red;}', 0);

console.log(style.sheet.cssRules); // length is 1, rule added

<p class="foo">

I am some text

</p>

运行上面的代码片段,您可以看到CSS规则确实适用。并且cssRules属性也在控制台中更改。

当浏览器扩展生成附加到DOM的自定义样式表时,以及在调试时它们在检查器中显示为空样式表时,通常会注意到这一点。

以上是 如何正确使用CSSStyleSheet.insertRule()? 的全部内容, 来源链接: utcz.com/qa/434413.html

回到顶部