4

スタイルシートを呼び出す方法はありますか?それが利用できない場合にのみ、別の場所からスタイルシートを呼び出しますか?

このようなもの:

<link rel="Stylesheet" type="text/css" href="http://cdn.somewhere.com/css/style.css" />
<link rel="Stylesheet" type="text/css" href="local/style.css" />

しかし、最初のものが利用できない場合にのみ、2番目のものを呼び出しますか?不要な場合は2回かけたくない。ありがとうございました。

編集:これは、職場で気付いたためです。CDNがブロックされているため、スタイルは表示されませんが、サイトには表示されます。多くの場所に同じブロックがあると思います(ファイアウォールがWebアプリケーションをブロックしている)。それでは、ローカルコピーからcssを取得したいと思います。

4

6 に答える 6

5

純粋なHTMLマークアップでは不可能です。ただし、このサーバー側では、次のような単純なスクリプトを使用できます(擬似コード)。

if first style does not exist:
    output <link> to second sheet
else
    output <link> to primary sheet

ただし、実際には、スタイルシートはブラウザによってキャッシュされる可能性が高いため、エンドユーザーに負担をかけることはほとんどありません。'second'スタイルシートが最初にロードされ、プライマリシートが2番目にロードされるようにsを注文するだけです。これにより、プライマリシートがセカンダリシートのすべてを上書きします...ただし、プライマリシートが使用できない場合でも、セカンダリシートは意図したとおりに機能します。

于 2009-05-15T12:03:12.537 に答える
2

JavaScript / AJAXは、その非常に予測不可能な動作のため、強くお勧めしません(ブラウザー間の互換性については話していませんが、一部のユーザーはそれをオフにしました)。

私があなたなら、最初に与えられたCSSサーバー側の存在を確認し、それに応じてhrefを挿入します。

また、この種のメカニズムを使用して確認する必要がある場合は、サーバーの信頼性が低いと言っていることにも注意してください。

于 2009-05-15T12:11:03.313 に答える
1

いいえ、LINK要素自体は静的(「ダム」)であるためです。したがって、JavaScript、GreaseMonkey(Firefox上ですがJavaScriptでもあります)が必要であるか、実際には両方を要求する必要があります。

ただし、順序は異なっている必要があります。IIRC:同じCSSルールが以前のルールを上書きします。したがって、最初にローカルファイルをインクルードしてから、外部ファイルをロードする必要があります。外部のものが利用できない場合は、ローカルコピーが使用されます。

CSSファイルをローカルハードディスクに置くと、これはかなり安くなります。

とはいえ、ブラウザが常にファイルをダウンロードするとは限りません。最初に、キャッシュ内のコピーがまだ最新であるかどうかを確認し、最新である場合は、ファイルを再度ダウンロードしません。

于 2009-05-15T12:09:45.877 に答える
0

デフォルトでは、「local.css」を使用し、javascript(ajaxを使用)を使用して新しいものをロードできます。リクエストが新しいcssファイルをロードできる場合は問題ありません。それ以外の場合は、何でも変更します。

于 2009-05-15T12:07:47.800 に答える
0

うーん...あなたはこれを使用します:

最初のスタイルシートが失敗したときに代替スタイルシートがロードされるかどうかはわかりませんが、よくわからない場合は、これを読んでみてください:スタイルシートを変更するためのリストアパートチュートリアル

于 2009-07-20T23:11:55.223 に答える
-4

これはJavaScriptで実現できます。コードは次のようになります。

if( loadcss(first.css) == false) loadcss(second.css);

ここで、loadcssは、cssがロードされているかどうかをチェックする関数です。

于 2009-05-15T12:04:53.937 に答える