document.styleSheets[x].cssRules 为空
document.styleSheets[x].cssRules are null
当我检查网站时,
我看到来自 document.styleSheets[x].cssRules
的 cssRules
但是,对于此网站 whosebug.com
,当我使用 Chrome 浏览器检查时,我看到 document.styleSheets
,但 cssRules
为空。
这怎么可能?
那是因为样式表来自不同的域。某些浏览器(例如 Chrome)通过抛出安全错误或将来自不同域的 cssRules
和 ownerRule
设置为 null 来实施严格的跨域策略......在你的情况下样式表来自 CDN
MDN 在 CSSStyleSheet
文档中引用了以下内容...
In some browsers, if a stylesheet is loaded from a different domain,
calling cssRules results in SecurityError.
https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet
要尝试绕过此问题,您可以在 link 标记中添加 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 支持添加到您的服务器。
当我检查网站时,
我看到来自 document.styleSheets[x].cssRules
但是,对于此网站 whosebug.com
,当我使用 Chrome 浏览器检查时,我看到 document.styleSheets
,但 cssRules
为空。
这怎么可能?
那是因为样式表来自不同的域。某些浏览器(例如 Chrome)通过抛出安全错误或将来自不同域的 cssRules
和 ownerRule
设置为 null 来实施严格的跨域策略......在你的情况下样式表来自 CDN
MDN 在 CSSStyleSheet
文档中引用了以下内容...
In some browsers, if a stylesheet is loaded from a different domain, calling cssRules results in SecurityError.
https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet
要尝试绕过此问题,您可以在 link 标记中添加 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 支持添加到您的服务器。