2011-01-29 39 views
0

我有一個PHP表單,我需要強制一次提交CSS重載。我該怎麼做呢?PHP表單提交,強制CSS重載?

謝謝!

+0

是否有一個原因,你不想重新加載整個頁面? – 2011-01-29 00:31:40

+0

整個頁面中都有處理腳本,但是當它重新加載時,CSS將被緩存。如果我做了一個Ctrl F5它正確加載。 – user547794 2011-01-29 00:32:39

+4

解決此問題的最簡單方法是在.css鏈接的末尾附加一個查詢:mystyle.css?v = 1當頁面回傳時。 – 2011-01-29 01:15:31

回答

3

我能想到的唯一辦法保證CSS重新加載,就是改變css文件的名字。

你可以創建一個重寫規則,將類型「... mycssfile.css1234」的所有地址重定向到「... mycssfile.css」,並在你的php中,隨機添加4位數字到你的css文件的末尾位置。

編輯:爲了反映意見,這個答案,你可以做到以下幾點:

<link rel="STYLESHEET" href="mycssfile.css?r=<?php echo rand(1, 999999); ?>" type="text/css"> 

這將迫使瀏覽器更新CSS頁面,因爲地址的CSS文件改變了,雖然會實際上鍊接到相同的CSS文件。

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來做到這一點。

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

例如cssChange功能:

 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類。