部分ios微信点击返回不刷新

本文探讨了解决iOS微信环境下WebView返回时页面不刷新的问题,通过使用window.onpageshow和event.persisted属性,确保了页面返回时能够重新加载和执行JavaScript代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

而IOS部分机型微信返回,是window.history.back()返回历史页面,不会刷新页面(js也不会再次执行)。

(参考网址:http://hao.jser.com/archive/17998/)

 

 

现在有个需求,微信公众号菜单菜单栏下添加一个链接,链接到第三方,同时又分登陆和未登录两种情况,要求在未登录的情况下给第三方添加一个固定的值,在登陆的情况下把用户的信息传给第三方

 

我的解决办法:

添加一张空白页面,在里面获取用户信息,在这个页面做短暂停留之后直接跳到第三方,(弊端:网速慢的情况下会在这个页面停留较长时间(我采用了加载动画效果来掩盖))

 

1、遇到的问题:在第三方点击返回到公众号页面时,会返回并停留在这张空白页面 1)、想到的解决办法(1),采用H5的historyAPI pushState,在进入这个面创建一条历史记录,然后监听onpopstate

$(function(){ 

    pushHistory(); 

    window.addEventListener("popstate", function(e) { 

        alert("我监听到了浏览器的返回按钮事件啦");//根据自己的需求实现自己的功能 

}, false); 

    function pushHistory() { 

        var state = { 

            title: "title", 

            url: "#" 

        }; 

        window.history.pushState(state, "title", "#"); 

    } 

       

});

 但是H5的historyAPI监听到是下个页面到当前页面,意思这个方法只有写在第三方页面才能起作用,很显然无法做到。(2)、第二种用到了sessionStorage,对话关闭sessionStorage保留的数据就丧失,也可以用localStorage,执行完你想要的操作之后执行localStorage.removeItem(value);不然localStorage里面的数据会一直存在

2、这时候遇到了第三个问题,使用sessionStorage之后,安卓手机完全没有问题,但是ios出现了问题,有的ios可以,有的ios会停留在在空白页面,这时候我首先想到的是sessionStorage不兼容的问题,但是插遍资料也没有找到关于sessionStorage兼容性问题,在整个解决过程我先后添加了alert调试,但是无法看到打印信息,所以又添加了vConsole.js辅助,这个可以看到错误的情况的打印但是看不到成功之后的打印,于是我又给代码添加了计时器,以保证我又足够的时间来看打印信息,发现点击返回之后页面没有刷新,代码没有执行,我刷新当前页面,执行了js实现了预期的效果,最后得出了“ios微信点击返回不刷新页面的结论”,最终在谷歌浏览器中搜索我所得出的结论,得到了我想要的结果,

//解决IOS微信webview后退不执行JS的问题

window.onpageshow = function(event) {

    if (event.persisted) {

        window.location.reload();

    }

};

添加到js中,再调试实现了预期的效果,解决了这个问题

 

 

解决问题过程中用到的调试方法,1、加vConsole.js,2、添加alert,console来判断js执行情况,3、添加计时器来延迟代码的执行,捕捉到自己想要的结果

参考网址:http://lxl.wiki/JavaScript/JavaScript/%E6%B5%8F%E8%A7%88%E5%99%A8%E5%90%8E%E9%80%80%E4%B8%8D%E5%88%B7%E6%96%B0%E9%A1%B5%E9%9D%A2%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/

 

 

转载于:https://my.oschina.net/u/3366008/blog/1541779

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值