表单提交后,浏览器(手机端)返回仍会返回到表单页修改汇总(二)

由于表单提交之后移动端返回仍会返回表单提交页面,为解决此问题搜寻以下暂定五种解决方式,以减少搜寻时间,但不能保证每种方式都生效,会因html内容不同效果不同,可逐一测试。

第一种方式《pageshow》

方法一

	window.addEventListener('pageshow', function(evt){
	    setTimeout(function(){
	        if(evt.persisted){
	            location.reload(true); // 返回时跳转的链接地址
	        }
	    });
	});

方法二

	window.onpageshow = function(e){
			if(e.persisted || (window.performance && window.performance.navigation.type == 2)){
				window.location.href = "../../index.html"; // 返回时跳转的链接地址
		}
	}

performance.navigation.type(该属性返回一个整数值,表示网页的加载来源,可能有以下4种情况):
  0:网页通过点击链接、地址栏输入、表单提交、脚本操作等方式加载,
  相当于常数performance.navigation.TYPE_NAVIGATE。
  1:网页通过“重新加载”按钮或者location.reload()方法加载,
  相当于常数performance.navigation.TYPE_RELOAD。
  2:网页通过“前进”或“后退”按钮加载,
  相当于常数performance.navigation.TYPE_BACK_FORWARD。
  255:任何其他来源的加载,
  相当于常数performance.navigation.TYPE_RESERVED。
 performance.navigation.redirectCount:表示网页经过重定向的次数。

第二种方式《popstate》

方法一

	window.addEventListener("popstate",function(e){
		window.location.href = "index.html"
	},false)

方法二

	window.onpopstate = function (e) {
	  // 这里进行业务逻辑的处理
	  location.href = '../../index.html'
  }

第三种方式《pageshow+pagehide》

	//解决手机物理按键返回不刷新页面的问题------------
	var isPageHide = false;
	window.addEventListener('pageshow', function (event) {
	    var TYPE_NAVIGATE = 0, // 当前页面是通过点击链接,书签和表单提交,或者脚本操作,或者在url中直接输入地址,type值为0
	    TYPE_RELOAD = 1, // 点击刷新页面按钮或者通过Location.reload()方法显示的页面,type值为1
	    TYPE_BACK_FORWARD = 2, // 页面通过历史记录和前进后退访问时。type值为2
	    TYPE_RESERVED = 255; // 任何其他方式,type值为255
	    //event.persisted属性为true时,表示当前文档是从往返缓存中获取
	    if (isPageHide || event.persisted || (window.performance && window.performance.navigation.type == TYPE_BACK_FORWARD)) {
	        location.reload();
	    }
	});
	window.addEventListener('pagehide', function () {
	    isPageHide = true;
	});

第四种方式《hash》

	// 控制手机物理键--返回
	window.onload = function(){
	  if(window.history && window.history.pushState) {  
	      $(window).on('popstate', function() {  
	          var hashLocation = location.hash;  
	          var hashSplit = hashLocation.split("#!/");  
	          var hashName = hashSplit[1];  
	          if(hashName !== '') {  
	              var hash = window.location.hash;  
	              if(hash === '') {  
	                  alert("你点击了返回键");  
	                  //location.href ='/xcview/html/apprentice/inherited_introduction.html'  /*跳转链接*/
	              }  
	          }  
	      });  
	      window.history.pushState('forward', null, './#forward');    //引号里写当前页面地址,刷新当前页'./inherited_introduction.html'
	  }
	};

第五种方式《onreadystatechange 》

// 本地测试无效果,不排除本地代码原因,可死马当活马医试一次
	document.onreadystatechange = function () {   
		if(document.readyState=="complete") {                           
			window.location.href = "../../index.html"
		}   
	}

文章来源地址(由于搜寻网址过多,仅找到部分网址)

performance.navigation.type详解----张小中的博客园

解决手机物理按键返回不刷新页面的问题----走看看

控制获取监听安卓手机物理返回键的事件----段龙龙的博客

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值