试图阅读styleSheets返回undefined
我已经搜索了一个答案,并没有解决方案似乎解决了这个问题,所以希望说明它具体将帮助我找到一个解决方案。试图阅读styleSheets返回undefined
我正在尝试使用document.styleSheets[0].cssText
来读取第一个样式表的cssText,但它总是返回undefined
。我确实有一个样式表,它显而易见,但JavaScript似乎没有认出它。
但是,当我使用<style>
将样式表包含在页面内时,这样做是有效的。但是,我不明白为什么在使用<link>
时会发生变化。它不仅放置在脚本之前,而且在页面完全加载后在全屏中使用javascript:alert(document.styleSheets[0].cssText)
时甚至会返回undefined
。
感谢您的任何帮助。
编辑:这适用于任何方法与document.styleSheets[0]
,包括那些应该在多种浏览器,并使用前<link>
为我工作的。例如:document.styleSheets[0].cssRules[0].selectorText
根据quirksmode.org,document.styleSheets[n].cssText
仅在IE中支持。
形式
document.styleSheets[n].cssRules[m].cssText
似乎更广泛的支持,所以你可以刚刚超过该循环,并建立从各个规则的字符串。 (虽然你必须替换cssRules
与IE的rules
)。
我说这个答案已经过时,但它可能对别人有用。 结果可能是“不确定的”,因为2个不同的原因:
一)在某些浏览器属性“cssRules”不工作(在符合http://www.javascriptkit.com/domref/cssrule.shtml,只为支持NS/Firefox浏览器)。对于其他浏览器,您应该使用属性“规则”,而不是。
您可以使用类似解决的问题:
if (document.styleSheets[0].cssRules)
crossrule=document.styleSheets[0].cssRules[0]
else if (document.styleSheets[0].rules)
crossrule=document.styleSheets[0].rules[0]
提取规则,之后,提取选择的名称:
document.styleSheets[0].cssRules[0].selectorText
二)发行overpassing后a),你可能会遇到另一个问题:以@开头的规则,就像@ font-face的@import一样,被认为是规则。但是,它们的“selectorText”未定义。所以,你必须有办法跳过它们。我正在努力,现在。但我还没有找到解决办法。无论如何,这是一个知道它发生的方式的帮助。
希望这有助于
时使用了''
我可以发誓它比IE支持更多。 – alex 2011-05-16 00:42:17