我正在尝试在任何加载的页面中检测(然后更改)样式表。
我尝试下面的代码:
// from https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList
var allCSS =
[].slice.call(document.styleSheets)
.reduce(function (prev, styleSheet) {
if (styleSheet.cssRules) {
return prev +
[].slice.call(styleSheet.cssRules)
.reduce(function (prev, cssRule) {
return prev + cssRule.cssText;
}, '');
} else {
return prev;
}
}, '');
console.log(allCSS);

例如,当我在此页面上运行此代码时,我会在控制台中获得一些样式表。
然而,绝对不是所有样式,它实际上只是它的一小部分。
例如,在调试器中,我看到该页面从“cdn.sstatic.net”中加载all.css
'有许多样式,没有一个显示。
我做错了什么?以及如何获得所有样式表?
THX!
答案 0 :(得分:5)
在某些浏览器中,如果从其他域加载样式表,
调用cssRules
会导致SecurityError。
document.styleSheets
cssRules属性必须遵循以下步骤:
答案 1 :(得分:0)
如果要求获取并更改.css
加载的document
个文件,您可以请求DevTools
处查看的文件,从document
删除所有现有的样式表,调整回复文本,将调整后的文本追加到.css
至document
或<style>
元素。