解决Firefox下,页面元素不刷新问题

由于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

原文地址:https://www.cnblogs.com/zhy-1992/p/6179940.html