2012-02-04 94 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

相關問題