收藏
回答

小程序页面返回到webview的h5页面webview不刷新?

我的场景:a、小程序首页-》b、h5活动列表-》c、小程序活动详情

c返回b b无法刷新

网上说了好多办法试过了都不行 求解啊

比如

1、先清空URL在赋值

<web-view wx:if="{{url}}" src="{{url}}" bindmessage="onMessage"></web-view>

 this.setData({
      url: "",
 });
    setTimeout(() => {
      this.setData({
        url: tmpUrl,
      });
    }, 400);


这个方法无效

2、 加时间戳

在b页面onshow的时候给URL地址拼接时间戳 是刷新了但是也增加了h5的页面栈 这样根本不符合要求

回答关注问题邀请回答
收藏

2 个回答

  • 🌙
    🌙
    03-20

    解决了!!!再加一个变量其他不变

    <web-view wx:if="{{url && show}}" src="{{url}}" bindmessage="onMessage"></web-view>
      onHide() {
        this.setData({
          show: false,
        });
      },
      onShow() {
        this.setData({
          show: true,
        });
    }
    
    03-20
    有用 1
    回复 5
    • J
      J
      04-26
      如果是单页面应用刷新不了吧?b页面如果是外部链接点击左上角返回能刷新吗
      04-26
      回复
    • 金金金
      金金金
      06-20
      你好,我的流程和你一样。想请教一下,我在c页面调用wx.navigateBack,会回到h5页面的首页。我期望是回到h5活动列表页
      06-20
      回复
    • 帅可帅非常帅也
      帅可帅非常帅也
      06-24
      这个方法也不行啊 老哥怎么解决的
      06-24
      回复
    • rio
      rio
      10-28
      实测已解决,主要是通过这个show让webview重新加载,这样h5页面就不会增加路由栈了
      10-28
      回复
    • hello Sydney
      hello Sydney
      11-14
      直接回到首页了啊
      11-14
      回复
  • 环境与健康
    环境与健康
    03-06

    有一个曲线的解决方案:

    1.在webview页面注册监听一个全局事件;

    2.你在上一级页面做完相应的操作后进行触发全局事件;

    3.监听到全局事件后进行redirectTo来防止增加页面栈;

    4.记得离开webview页面时移除全局事件;

    03-06
    有用
    回复 1
    • J
      J
      04-26
      如果是单页面应用,b页面如果是a页面通过 window.location.href打开的新窗口,点击左上角返回webview能监听到刷新a页面吗
      04-26
      回复
登录 后发表内容