由于FireFox的刷新机制与IE有较大区别。所以javascript代码 document.location.reload();通常在IE上工作正常,在Firefox下效果却并不理想,这是因为Firefox会记录上一次的页面元素的值,所以我们常常会看见刷新页面后,旧的值却好保留在页面上。
Tips: document.location.reload()相当于在Firefox上 按F5 来刷新,但 F5刷新 并不能清除缓存中被保留的页面元素的值。但我们可以用Ctrl+F5 来实现IE下F5的效果,先清除缓存,然后刷新页面。
但是在网页开发过程中,如何保证Firefox下的页面元素不保留上一次的结果,实时刷新呢?这里可以用到一个属性:autocomplete
将autocomplete设置成"off" 后退或刷新页面时,Firefox就不会自动记忆表单状态了。
autocomplete可以应用到整个form,也可以应用到单个的input上。如:
<form name="form1" method="post" autocomplete="off">
。。。
</form>
<input type="radio" name="rd_service" value="1">...</input>
通常在实际情况下,可能需要执行两次document.location.reload();才能真正刷新, 本人不才,还不能理解其中奥妙,这个可能是firefox3.6的bug。 请参考如下sample代码:
<script type="text/javascript">
var memberID = "<%=memberName%>";
var headersavedservice = "<%=category%>";
function headerchangeService(r_service){
if(confirm("Save it to default Service?"))
{
changeDsService(memberID, r_service);
document.location.reload();
document.location.reload();
}
else
{
var rd_services = document.getElementsByTagName_r("input");
for (var i = 0 ; i < rd_services.length ; i++ ){
if(rd_services[i].name == "rd_service" && rd_services[i].value == headersavedservice){
rd_services[i].checked=true;
break;
}
}
}
}
</script>
原文转载:http://blog.sina.com.cn/s/blog_647ca5120100j6n5.html