2012-02-04 95 views
0

我想知道是否可以访问放入样式表的自定义规则。例如,采取:是否有可能利用JavaScript的自定义CSS属性?

p { 
    line-height: 2em; 
    -js-min-line-height: 1.4em; 
} 

我试图穿越样式表对象,并抓住了CSS文本,但浏览器,因为它可能应该做的,不返回属性的文本不承认:

for styleSheet in document.styleSheets 
    for rule in styleSheet.cssRules 
    console.log rule.cssText 

简单的返回:

p { line-height: 1.4; } 
+0

那是CoffeeScript吗? – 2012-02-04 18:53:24

+0

您可以访问STYLE元素的整个(原始)文本内容,因此它肯定有可能... – 2012-02-04 18:58:03

+0

您如何访问原始文本?是的,这里有CoffeeScript。 – 2012-02-04 19:07:09

回答

1

这取决于CSS是怎样的。它依赖于它是否是链接的,组成的或硬编码的。如果它是硬编码的,那么只需在样式元素上放置一个id,然后使用document.getElementById("styleId").innerHTML来获取文本,然后通过将字符串拆分为分号来解析它。如果它是由javascript组成的,那么只需在其中添加一些额外的内容以保留样式应该很容易。如果它是链接的,我认为它是最有可能的,也是最难处理的情况,那么我会建议使用$.AJAX()将css加载到JavaScript中,阅读文本并解析它以获取所需内容,然后使用document.getElementsByName("head")[0].appendChild(varHoldingCss)添加样式到你的页面。

+0

是的,在所有情况下唯一有用的情况是在链接的样式表上。不得不通过AJAX请求第二次请求样式表将不是一个有用的解决方案。不幸的是,我认为你是对的,这可能是你能够实现我一直在问的唯一方法。 – 2012-02-05 06:11:46

+0

看起来你是对的。我在SO上发现了这个类似的问题,指出在JS中编写自己的CSS解析器,因为根据CSS 2.1规范本身,所有不受支持的规则都将被忽略:http://stackoverflow.com/a/5532657/230649 – 2012-02-05 06:14:15

相关问题