私は、一度提出されたCSSの再読み込みを強制するために必要なPHPフォームを用意しています。これはどうすればいいですか?PHPフォームを送信し、強制的にCSSを再読み込みしますか?
ありがとうございます!
私は、一度提出されたCSSの再読み込みを強制するために必要なPHPフォームを用意しています。これはどうすればいいですか?PHPフォームを送信し、強制的にCSSを再読み込みしますか?
ありがとうございます!
私は考えることができる唯一の方法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ファイルにリンクしています。
クエリ文字列も機能します。 – ThiefMaster
私は 'mycssfile.css#random'も動作すると思いますが、私は確信していません。 – Nathan
私の提案は、代わりに' filemtime'またはフォームが最後に送信されたときのCSSの変更時刻を使用することです。 – Thai
ページ全体がリセットできない理由はありますか?もしそれが大丈夫ならば、フォームはaction
のget
、そして(ドロップダウン|入力|ラジオボタン)が引数( "css"のようなもの)として提出されただけで、ページ自体に送信できます。
するとページが読み込まれると、PHPは変数を確認することができます。
$css = empty($_GET['css']) ? $_GET['css'] : 'default';
その後、それはスタイルシートのhref
その変数に基づいてエコーすることができます
<link href="<?php echo htmlspecialchars($css, ENT_QUOTES, 'UTF-8') ?>.css" ... />
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クラスを定義することができます。
ページ全体を再読み込みしたくない理由はありますか? –
ページ全体に処理スクリプトがありますが、サブミット時にリロードするとCSSがキャッシュされます。 Ctrlキーを押しながらF5キーを押すと、正しく読み込まれます。 – user547794
これを回避する最も簡単な方法は、.cssリンクの最後にクエリを追加することです。mystyle.css?v = 1は、ページがポストバックするときです。 –