4

CSS ファイルの生のコンテンツを取得する方法はありますか?

ベンダー固有の CSS プロパティを CSS ファイルから取得したいと考えたとします。どうにかして CSS コンテンツを取得し、それに応じて解析する必要があります。または、DOM を使用して CSS ファイルのルールにアクセスすることもできます。

問題は、DOM を使用している間、ほとんどすべてのブラウザー (<= IE8 を除く) がブラウザー エンジンに関連しないすべてのカスタム プロパティを削除する傾向があることです (webkit は -moz と -o と -ms を削除します)。 . したがって、CSS コンテンツを取得することはできません。

AJAX を使用して CSS ファイルのコンテンツを取得した場合、その CSS ファイルが別のドメインでホストされている場合、同じオリジン ポリシーが破られ、CSS コンテンツを取得できませんでした。

クロスドメイン AJAX アプローチを使用する場合、javascript コードを解析していないため (したがってコールバックがないため)、機能しない JSONP ソリューションしかありません。

コンテンツを取得する他の方法はありますか?

4

3 に答える 3

1

スクリプトを実行しているページと同じドメインに CSS ファイルがある場合は、AJAX を使用して CSS ファイルを取り込むことができます。

$.get("/path/to/the.css", function(data) {/* ... */});

そうでない場合は、Yahoo! を使用してみてください。プロキシとしてパイプし、JSONp で CSS を取得します。

解析に関しては、 Sizzleをチェックしてセレクターを解析できます。CSS 文法 (CSS 標準に掲載) を使用して、JS lex/yacc パーサーを使用してドキュメントを解析することもできます。私はそれで創造的になるためにあなたを残します。

幸運を!

于 2010-07-12T22:22:48.667 に答える
0

いいえ、あなたはそれをかなりカバーしました。IE 以外のブラウザーは、style/currentStyleオブジェクトとdocument.styleSheetsインターフェイスの両方で、オブジェクト モデルから不明なルールを取り除きます。(もちろん、通常、CSS にパッチを適用したいのは IE6-7 です。)

外部ドメインからスタイルシートを取得したい場合は、proxy-assisted-AJAX が必要です。また、CSS の解析は、特にブラウザーの癖を再現する必要がある場合は、非常に厄介な作業になります。私はそのようなことを精力的に避けます!

于 2010-07-12T22:18:44.020 に答える
0

JSONP は依然として有効なソリューションですが、多少目を痛めます。基本的に、コールバック パディングに加えて、1 つの JSON プロパティ「パディング」を追加し、CSS を値として渡す必要があります。たとえば、スクリプトhttp://myserver.com/file2jsonp/?jsonp=myCallback&textwrapper=cssContentsを呼び出すと、次のように返されます。

myCallback("cssContents":"body{text-decoration:blink;}\nb{text-size:10em;}");

すべての改行をテキストエンコードし、CSS ファイルの内容を引用符で囲む必要があります (既存の引用符をエンコードした後)。Twitter XML フィードを使用してこれを行う必要がありました。私がそれを構築したとき、それはとても恐ろしいアイデアのように感じましたが、それはその仕事をしました.

于 2010-07-12T22:38:58.407 に答える