详解解决小程序中webview页面多层history返回问题

 更新时间:2019年08月20日 09:58:16   作者:sunny  
这篇文章主要介绍了详解解决小程序中webview页面多层history返回问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

小程序开发中遇到的问题:小程序中嵌套了一个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会存值,如果直接关闭页面,不会被清除,那么在小程序中访问时就直接回退了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • swiper移动端轮播插件(触碰图片之后停止轮播)

    swiper移动端轮播插件(触碰图片之后停止轮播)

    这篇文章主要为大家详细介绍了swiper移动端轮播插件,触碰图片之后停止轮播,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • swiper动态改变滑动内容的实现方法

    swiper动态改变滑动内容的实现方法

    假设当前显示的是1,往左滑动一个递减1,往右滑动一个递增1。下面通过实例代码给大家讲解swiper动态改变滑动内容的实现方法,感兴趣的朋友一起看看吧
    2018-01-01
  • p5.js临摹旋转爱心

    p5.js临摹旋转爱心

    这篇文章主要为大家详细介绍了p5.js临摹旋转爱心,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • javaScript实现一个队列的方法

    javaScript实现一个队列的方法

    这篇文章主要介绍了javaScript实现一个队列的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • JS如何遍历带有子集的数组集合(嵌套数组)

    JS如何遍历带有子集的数组集合(嵌套数组)

    这篇文章主要介绍了JS如何遍历带有子集的数组集合(嵌套数组)问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法

    js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法

    下面小编就为大家带来一篇js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • JS中的数组方法笔记整理

    JS中的数组方法笔记整理

    这篇文章主要介绍了JS中的数组方法笔记整理 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • JavaScript中的子窗口与父窗口的互相调用问题

    JavaScript中的子窗口与父窗口的互相调用问题

    本文给大家介绍了JavaScript中的子窗口与父窗口的互相调用问题,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-02-02
  • js实现图片粘贴到网页

    js实现图片粘贴到网页

    这篇文章主要为大家详细介绍了js实现图片粘贴到网页,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 关于js new Date() 出现NaN 的分析

    关于js new Date() 出现NaN 的分析

    在一个项目中需要进行日期的格式化,后台传到前端是时间的整数(Date.getTime),当后台数据返回字符串时,发现转换日期时在ie下变成NaN,但是真的是这样吗?接下来我们慢慢分析
    2012-10-10

最新评论