禁止火狐浏览器缓存input标签方法

禁止火狐浏览器缓存input标签方法

问题1:在火狐浏览器里,云平台的输入框、选项框、勾选框…填写之后按F5刷新页面,之前填的东西会保留着,其它浏览器不会
火狐强制刷新用Ctrl + F5
浏览器自动保存表单内容可以设置的

问题2:在网页上用<input taype="hidden" value="xxx">的方式来存储一些变量,值被改变后,按下F5刷新网页,input的值会被Firefox自动还原到刷新前的状态,所以某些时候,一些基于这些值进行的JS事件就无法被初始化。
让Firefox不缓存input值需要进行如下修改:
<input autocomplete="off" type="text" />
input加上一个 autocomplete="off" 的属性就能阻止Firefox的默认缓存机制。刷新之后,这些input的值都初始化。

还有一个写法,在form标签里面加上autocomplete="off" 的属性可以把全个表单中所有input都设置为不缓存的:
<form autocomplete="off">
<input type="text" /><br />
<input type="text" />
</form>

---------------------------------------
另外级联选择的可以在页面加载完成后用js重新赋值一次。
//避免浏览器缓存选择已选省份无法触发onchange事件,省份不为0,城市为0时自动根据省份请求城市
$(function(){
if($('#province').val() != 0 && $('#city').val() == 0){
$.ajax({
type: 'post',
url : base_url+'Manage/Common/getProvinceCities',
dataType:'json',
data: 'pid='+ $('#province').val(),
success: function(result){
resetCities(result);
},
error: function(result) {
alert('error');
}
});
}
});

---------------------------------------

其他几种禁止浏览器缓存页面的方法:
1.在要禁止缓存的页面<head>中加以下脚本:
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

2.在要禁止缓存的页面<head>中加以下脚本:
Jsp代码
<%
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
%>

head 里面是整个页面的缓存,跟表单input不一样的

返回状态304的就是缓存到本地的文件,不会重新从服务器加载的
http缓存机制是有很多种很多层面的,有空可以深入了解下

原文地址:https://www.cnblogs.com/zdz8207/p/5550648.html