为什么Chrome无法使用带有Javascript的insertRule访问外部样式表?

时间:2018-03-04 22:28:52

标签: javascript html css

我有一个HTML文件,并在头部链接,一个外部样式表,并且它们都在同一个文件夹中。只有一个样式表。在身体的底部,我有一个脚本:

document.styleSheets[0].insertRule(".example{position: relative}", 0);

但我收到此错误消息(令人惊讶的是仅在Chrome 64上,在FireFox上,Safari移动版和Chrome移动版运行良好):

Uncaught DOMException: Failed to execute 'insertRule' on 'CSSStyleSheet': Cannot access StyleSheet to insertRule

为什么?

1 个答案:

答案 0 :(得分:1)

更改插入的索引。在CSS文件中,所有@ Rules必须位于文件的顶部。因此,如果CSS文件顶部有4个@规则,则将索引更改为4:

document.styleSheets[0].insertRule(".example{position: relative}", 4);

这应该有效。

这是规范参考(见注释):

https://drafts.csswg.org/cssom/#insert-a-css-rule