2011-01-29 9 views
0

私は、一度提出されたCSSの再読み込みを強制するために必要なPHPフォームを用意しています。これはどうすればいいですか?PHPフォームを送信し、強制的にCSSを再読み込みしますか?

ありがとうございます!

+0

ページ全体を再読み込みしたくない理由はありますか? –

+0

ページ全体に処理スクリプトがありますが、サブミット時にリロードするとCSSがキャッシュされます。 Ctrlキーを押しながらF5キーを押すと、正しく読み込まれます。 – user547794

+4

これを回避する最も簡単な方法は、.cssリンクの最後にクエリを追加することです。mystyle.css?v = 1は、ページがポストバックするときです。 –

答えて

3

私は考えることができる唯一の方法CSSがリロードすることを保証するには、CSSファイルの名前を変更することです。

タイプ "... mycssfile.css1234"のすべてのアドレスを "... mycssfile.css"にリダイレクトする書き換えルールを作成し、PHPでcssファイルの最後にランダムな4桁の数字を追加することができますロケーション。

編集:この回答へのコメントを反映するには、次の操作を行うことができます

それはなりますが、CSSファイルへのアドレスは、変更されているので、CSSページを更新するために、ブラウザを強制する
<link rel="STYLESHEET" href="mycssfile.css?r=<?php echo rand(1, 999999); ?>" type="text/css"> 

実際には同じcssファイルにリンクしています。

+0

クエリ文字列も機能します。 – ThiefMaster

+0

私は 'mycssfile.css#random'も動作すると思いますが、私は確信していません。 – Nathan

+0

私の提案は、代わりに' filemtime'またはフォームが最後に送信されたときのCSSの変更時刻を使用することです。 – Thai

0

ページ全体がリセットできない理由はありますか?もしそれが大丈夫ならば、フォームはactionget、そして(ドロップダウン|入力|ラジオボタン)が引数( "css"のようなもの)として提出されただけで、ページ自体に送信できます。

するとページが読み込まれると、PHPは変数を確認することができます。

$css = empty($_GET['css']) ? $_GET['css'] : 'default'; 

その後、それはスタイルシートのhrefその変数に基づいてエコーすることができます

<link href="<?php echo htmlspecialchars($css, ENT_QUOTES, 'UTF-8') ?>.css" ... /> 
1

Javascriptで実行できます。例cssChange機能については

<form id="form" onsubmit="cssChange()" action="..... 

 function cssChange() { 

     var a = document.getElementsByTagName('link'); 
     var random = Math.floor(Math.random()*11); 
     if(a.getAttribute('rel') == 'css') 
      { 
        a.attr('src', 'new-css.css?' + random); 
      } 

    } 

そして、あなたはあなたのcssファイルの.newClassクラスを定義することができます。

+0

cssChange()は何をしますか?あなたはその機能を提供していません。 – Olhovsky

+0

私は彼にアイデアを出したかった。 CSSファイルを変更するためのjavascriptのfuntionがたくさんあります。私は今私の答えを編集します。ありがとうございました。 – Eray

+0

質問に答えていないようです – Ben

関連する問題