摘要:听起来似乎也可行,但小程序的缓存和微信的缓存是同步的,如果在微信环境中直接访问页面,重定向到会存值,如果直接关闭页面,不会被清除,那么在小程序中访问时就直接回退了。
小程序开发中遇到的问题:小程序中嵌套了一个webview页面,webview页面中有静默授权(A1页面静默授权后重定向到A2页面),点小程序原生的返回按钮会返回到A1页面,然后页面就会反复静默授权
预期表现:点小程序原生的返回按钮后返回到小程序上个页面
解决方案:通过history.pushState添加历史记录名目,history.onpopstate监听历史记录条目发生变化时,调用小程序APIwx.navigateBack
window.addEventListener("popstate", (event) => { wx.miniProgram.navigateBack(); }); const code = getSearch("code"); // 伪代码,获取查询参数 if (!code) { // 页面A1 if (isWeixin()) { // 微信环境 const redirectUrl = window.location.href + "&code=1"; window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize" + "?appid=" + appId + "&redirect_uri=" + encodeURIComponent(redirectUrl) + "&response_type=code&scope=snsapi_userinfo" + "#wechat_redirect"; // 静默授权伪代码 } else { alert("当前不是微信环境"); } } else { // 页面A2 history.pushState({page: 1}, null, window.location.href); }
刚开始想的解决办法是用localStorage,跳转到A2时存储一个值,返回到A1时获取这个值,如果有值就清除这个值并且回退到小程序页面。听起来似乎也可行,但小程序的缓存和微信的缓存是同步的,如果在微信环境中直接访问A1页面,重定向到A2会存值,如果直接关闭页面,不会被清除,那么在小程序中访问时就直接回退了。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/109989.html
摘要:场景在小程序其它页面做了操作,数据发生改变,回到页面时需要更新里面的数据。由于小程序没有提供与的实时通信能力,因此刷新页面是个可考虑的做法。小结目前我了解到的情况来看,确实没有一个简单的可以直接无副作用地刷新小程序。 场景 在小程序其它页面做了操作,数据发生改变,回到webview页面时需要更新webview里面的数据。由于小程序没有提供与webview的实时通信能力,因此刷新页面是个...
摘要:最近开始移动端页面的时候,被和坑了一把,于是决定对这两个对象进行一个全面的剖析。但出于隐私方面的原因,对象不再允许脚本访问已经访问过的实际。唯一保持使用的功能只有和方法。华为执行完之后,我们发现不能回退了,是不是就跟实现同样的效果了。 最近开始移动端页面的时候,被window.location和window.history坑了一把,于是决定对这两个对象进行一个全面的剖析。下面进行我们的...
阅读 700·2021-11-18 10:02
阅读 2234·2021-11-15 18:13
阅读 3137·2021-11-15 11:38
阅读 2932·2021-09-22 15:55
阅读 3664·2021-08-09 13:43
阅读 2437·2021-07-25 14:19
阅读 2448·2019-08-30 14:15
阅读 3440·2019-08-30 14:15