2011-01-29 43 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类。