DOMException:无法执行styleSheet.insertRule

时间:2019-06-25 14:42:56

标签: javascript css

我正在尝试将规则插入样式表。该规则是有效的(我认为),并且取自我的代码来自normalize.css(https://github.com/necolas/normalize.css/blob/master/normalize.css#L206-L212):

var styleEl = document.createElement('style');
document.head.appendChild(styleEl);
var styleSheet = styleEl.sheet;
styleSheet.insertRule('button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner{border-style:  none;padding:  0;}');

Chrome(75.0.3770.100)引发错误:

VM381:1 Uncaught DOMException: Failed to execute 'insertRule' on 'CSSStyleSheet': Failed to parse the rule 'button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner{border-style:  none;padding:  0;}'.
    at <anonymous>:1:12

上面的代码用于插入其他规则,效果很好。只是这个规则失败了。这是normalize.css中格式错误的规则吗?

1 个答案:

答案 0 :(得分:0)

尽管这可能不是您要查找的内容,但问题似乎出在Chrome。如果您在Firefox(该规则的意思是浏览器)中运行此程序,它将正常工作。话虽如此,我建议您在添加此规则之前先进行检查以确保浏览器为Firefox。

可能会发生以下情况:

if ('MozBoxSizing' in document.body.style) { // Firefox 3.2+
    styleSheet.insertRule('button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner{border-style:  none;padding:  0;}');
}

可以找到其他浏览器的检查here