由于表单提交之后移动端返回仍会返回表单提交页面,为解决此问题搜寻以下暂定五种解决方式,以减少搜寻时间,但不能保证每种方式都生效,会因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"
}
}
文章来源地址(由于搜寻网址过多,仅找到部分网址)