document.styleSheets [x] .cssRules为null

时间:2017-09-22 03:25:21

标签: css stylesheet

当我检查网站时,
我从document.styleSheets[x].cssRules

中看到了cssRules

enter image description here

但是,对于此网站stackoverflow.com,当我使用Chrome浏览器进行检查时,我看到document.styleSheets,但cssRules为空。

enter image description here

怎么可能这样?

2 个答案:

答案 0 :(得分:7)

那是因为样式表来自不同的域。某些浏览器(例如Chrome)通过抛出安全错误或将cssRulesownerRule设置为null来实现严格的跨域策略来自不同的域...在您的情况下样式表来来自CDN

MDN引用CSSStyleSheet文档中的以下内容......

  

在某些浏览器中,如果从其他域加载样式表,   调用cssRules导致SecurityError。

https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet

答案 1 :(得分:2)

要尝试绕过此问题,您可以在链接标记中添加 crossorigin="anonymous" 以防止出现错误。

更多信息在这里:

https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin

这将创建一个 potencial cors request,但服务器必须响应 Access-Control-Allow-Origin: *Access-Control-Allow-Origin: <authorized-domain>

您可以查看 here 以了解如何向您的服务器添加 CORS 支持。

有关 CORS 的更多信息,您可以阅读 thisthis