1.报错的函数:

        $.ajax({


type: "POST",


data:{"requestParams":JSON.stringify(requestParams)},


url: getBasePath()+"/rest/userInfo/saveGjzLoginLogList",


dataType : "json",


cache: false,


error: function(json)


{


alert("亲,网络似乎开小差了");


},


success: function(data){




}


});

2.遇到此问题首先想到的是ios物理返回事件不刷新的问题,下面是解决返回事件的方法及总结

 1.物理返回事件,强制页面刷新(结果:::苹果手机会进入返回的死循环,a-b-c,点返回后是c-b-c-b-c-b)
var ua = navigator.userAgent;  
    if (ua.indexOf('iPhone') > -1) {//苹果手机  
        window.onload = function () {  
            setTimeout(() => {  
                window.addEventListener("popstate", function (e) {  
                    // alert("我监听到了浏览器的返回按钮事件啦");  
                    self.location = document.referrer;  
                });  
            }, 500)  
        }  
    }  




    2.单个页面添加物理返回事件(可行,但是要单个页面设置,跳转到指定页面)
    <script>


     $(document).ready(function(){
         pushHistory(); 
     window.addEventListener("popstate", function(e) {  //回调函数中实现需要的功能
        alert("我监听到了浏览器的返回按钮事件啦"); 
        window.location.href="../../ownerYJQ/index.html";
    }, false); 
    })
//监听返回事件
function pushHistory() {  
    var state = {
    returnUrl:"index.html",
        title: "选择小区",  
        url: "__SELF__"  
    };  
    window.history.pushState(state, state.title, state.url);  
}
    </script>

3.var wxback = {
    init :function(){
      //隐藏微信分享按钮等
      document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
        WeixinJSBridge.call('hideToolbar');
        WeixinJSBridge.call('hideOptionMenu');
        WeixinJSBridge.call('hideMenuItems');
      });
      if(getSystem()=="ios"){
        //this.pushHistory();
        /* window.addEventListener("popstate", function(e) { //回调函数中实现需要的功能
          //window.location.href = document.referrer+"&"+Math.floor(Math.random()*1000);
          //history.go(-1);//不管怎么样都是返回到最初的页面返回了n次
          //history.back();//不管怎么样都是返回到最初的页面返回了n次
          //window.location = document.referrer;//上一个页面url
          //WeixinJSBridge.call('closeWindow');//直接关闭页面
        }, false);*/
        var isPageHide = false; 
        window.addEventListener('pageshow', function () { 
         if (isPageHide) {
          window.location.reload(); 
         } 
        }); 
        window.addEventListener('pagehide', function () { 
         isPageHide = true; 
        }); 
      }
    },
    pushHistory :function () {
      var state = { 
        title: document.title, 
        url: location.href 
      }
      window.history.pushState(state, state.title, state.url); 
      console.log(window.history);
    },
}
4. pageshow安卓没响应,pagehide苹果没响应。页面会先进入缓存页面,在进入重加载页面,加载缓存页面的时候,页面报错。
$(function () { 
  var isPageHide = false; 
  window.addEventListener('pageshow', function () { 
    if (isPageHide) {
    alert("进来了");
      window.location.reload(); 
    } 
  }); 
  window.addEventListener('pagehide', function () { 
  alert("走了");
    isPageHide = true; 
  }); 
})


5.   function pushHistory() {
      var state = { 
        title: document.title, 
        url: location.href 
      }
      window.history.pushState(state, state.title, state.url); 
     // console.log(window.history);
    }


6.监听是否是缓存过来的页面以下是几种使用方式:


      1。直接在HTMl中使用,注意只能在body上进行事件注册


     <body οnpageshοw="myFunction(event)">


    <p>该实例演示了如何向 body 元素添加 "onpageshow" 事件。</p>
    <h1 id="demo"></h1>
    <script>
    function myFunction() {


    alert("页面是否从浏览器缓存中加载? " + event.persisted);


    }
    </script>


   2.JS中通过元素获取绑定在body上


   document.getElementsByTagName("BODY")[0].onpageshow = function() {myFunction()};


   3.在window上注册这个方法


   window.addEventListener("pageshow", myFunction);
   function myFunction(event) {


   alert("页面是否从浏览器缓存中加载? " + event.persisted);
   }.


7. (结果:::进入死循环)


  1.js中获取上一页面的路径var prevUrl = document.referrer;


  2.h5的特性sessionStorage来保存路径sessionStorage.setItem("prevUrl",prevUrl );(不熟悉的可以百度一下sessionStorage和localStorage的区别和用法)


  3.获取上一页面的路径var prevUrl = sessionStorage.getItem("prevUrl");


10.窗体中有XMLHttpRequest对象却没有初始化,接下来开始研究怎么初始化XMLHttpRequest对象。
 var xmlHttpRequest;

       $(function(){
        if(window.XMLHttpRequest){
      xmlHttpRequest=new XMLHttpRequest();

 }else{
 xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");

 }
 xmlHttpRequest.open("GET","AjaxServlet",true);
 });




3.最终是通过改ajax解决。确实是只有缓存页面才会报错,但是是因为ajax没有设置好

$.ajax({
type: "POST",
data:{"requestParams":JSON.stringify(requestParams)},//简化传参
url: getBasePath()+"/rest/userInfo/saveGjzLoginLogList",
dataType :"json",
cache: false,//增加设置同步
async:false,//增加延时
timeout:50000,
error: function(json)
{
alert("亲,网络似乎开小差了-数据埋点");
},
success: function(data){
}
}); 
增加了async:false;timeout:50000.对传参进行简化