2012-02-04 7 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ですか? –

+0

STYLE要素の(生の)テキストコンテンツ全体にアクセスできるので、確かに可能です。 –

+0

生のテキストにはどうやってアクセスしますか?はい、スニペットにCoffeeScriptがあります。 –

答えて

1

それはCSSが導き出される方法によって異なります。それが依存しているのは、それがリンクされているか、構成されているか、またはハードコードされているかどうかです。ハードコーディングされている場合は、スタイル要素にidを置き、document.getElementById("styleId").innerHTMLを使用してテキストを取得し、セミコロンで文字列を分割して解析します。それがjavascriptで構成されている場合、そのスタイルを保持するためにいくつかの余分なコンテンツを追加するのは簡単なはずです。それがリンクされている場合は、最も可能性があり、扱うのが最も難しい場合は、$.AJAX()を使用してCSSをCSSに読み込み、テキストを読み込んで構文解析し、document.getElementsByName("head")[0].appendChild(varHoldingCss)を使用してスタイルを追加することをお勧めしますあなたのページに。

+0

すべての場合、有益な状況はリンクされたスタイルシートにあります。スタイルシートをAJAXリクエストを介してもう一度要求することは有益な解決策ではありません。残念ながら、私はあなたが正しいと思うので、私が求めていることを達成するための唯一の方法かもしれません。 –

+0

あなたが正しいように見えます。私は、CSS 2.1スペックそのものに従って、サポートされていないすべてのルールが無視されるため、JSに独自のCSSパーサーを書くことを指しているので、この類似の質問が見つかりました:http://stackoverflow.com/a/5532657/230649 –

関連する問題