我无法获得某些页面的所有cssRules

时间:2015-08-03 20:45:11

标签: javascript css

我正在尝试使用JavaScript获取所有CSS规则。 在某些页面上我成功了,在某些方面我没有成功。

例如,在StackOverflow中,我正在使用:

console.log(
document.styleSheets[1].href,'rules',
document.styleSheets[1].cssRules,'Should be css rules, and not null'
)

这就是我得到的:

http://cdn.sstatic.net/stackoverflow/all.css?v=f7d3e9ff74be rules null Should be css rules, and not null

对于其他一些网站来说,它运作良好,但有时却不行。

例如在github.com中,这就是我得到的:

https://assets-cdn.github.com/assets/github2/index-87247f16e6450ef54cb0eda3f8f1484e33a3f18c7a7d3df1f76f67cba36a8d6d.css CSSRuleList {0: CSSStyleRule, 1: CSSStyleRule, 2: CSSStyleRule, 3: CSSStyleRule, 4: CSSStyleRule, 5: CSSStyleRule, 6: CSSStyleRule, 7: CSSStyleRule, 8: CSSStyleRule, 9: CSSStyleRule, 10: CSSStyleRule, 11: CSSStyleRule, 12: CSSStyleRule, 13: CSSStyleRule, 14: CSSStyleRule, 15: CSSStyleRule, 16: CSSStyleRule, 17: CSSStyleRule, 18: CSSStyleRule, 19: CSSStyleRule, 20: CSSStyleRule, 21: CSSStyleRule, 22: 

我该怎么办?

Console example on stackoverflow

  1. 我想也许是因为内容类型。但不是。它始终是text / css
  2. 我想也许是因为CORS问题,但我没有看到这就是问题所在。

1 个答案:

答案 0 :(得分:1)

document.styleSheets包含<style type="text/css"></style>以及<link rel="stylesheet" type="text/css" href="style.css">,因此您不会从第一个获得href。我会检查这些样式是否也不是空白,以防它们没有cssRules。