当前位置: 代码迷 >> Web前端 >> google Chrome浏览器上,按后退按钮*history.back() 缓存有关问题
  详细解决方案

google Chrome浏览器上,按后退按钮*history.back() 缓存有关问题

热度:789   发布时间:2012-11-22 00:16:41.0
google Chrome浏览器下,按后退按钮*history.back() 缓存问题
只有google浏览下,才有这个问题,猜想是不是缓存的问题:有其他人遇到过吗

页面加载的时候,运行一段ajax代码(prototype):
       if(document.all){
//IE
window.attachEvent('onload',sample);
}else{
//其他浏览器
window.addEventListener('load',sample,false);
       }
      function sample(){
         ...
         ...
         myAjax[0] = new Ajax.Request(url,{
method: 'post',   ← 或者:get
onSuccess: getData,
onFailure: showErrMsg,
parameters: paramList
});

         function getData(data){
            alert(data.responseXML);   ← 测试添加
              var response=data.responseXML.getElementsByTagName('header');
            ...
            ...
         }  

         function  showErrMsg(){
            ...
            ...
         }
      }


程序大概是这样的

以上代码作如下说明:
1. 为了防止缓存,生成的url后面加了一个每次都变化的参数:systime=xxxxxxxx
   url功能:比如检索数据库,然后返回检索结果(xml)。
2.函数代码例子如下:


调试的时候,正常操作:点击链接跳转画面的时候,正常返回想要得结果(responseXML),当继续操作跳转到其他页面,然后点击返回按钮回到这个页面的时候,
alert(data.responseXML);  >> responseXML为null  javascript error
之后的javascript  代码也就不执行了...
后台log也看过了,当按返回按钮(history.back)返回,页面加载的时候,sample()函数执行了,但Ajax.Request没有执行,感觉是不是缓存的问题??但是url每次都是变化的。

测试环境:server: tomcat6.0  浏览器:google Chrome2.0.172.39  strut1.2项目






1 楼 lijingf117 2010-08-03  
补充一下,后退按钮是指:history.back()

感觉是google Chrome把前一次的显示记录保存,然后虽然利用onload去再执行ajax代码,但世界上没有执行服务器的代码。

  相关解决方案