登录  /  注册

微信小程序更新webview页面的三种方法

php是最好的语言
发布: 2018-08-06 15:32:07
原创
17988人浏览过

场景

在小程序其它页面做了操作,数据发生改变,回到webview页面时需要更新webview里面的数据。由于小程序没有提供与webview的实时通信能力,因此刷新页面是个可考虑的做法。

方法一

最常见的做法,修改一下webview的url,加点query参数什么的,页面就会更新了。但是这会增加webview的浏览history,导致用户在后退的时候,会在webview内退到前一个页面,而不是退到小程序的前一个页面。

方法二

在小程序内调用wx.redirectTo(OBJECT)方法。这里填当前页面的url。其实是关闭当前页面重新打开,变相达到刷新webview的目的。但是由于重新打开了小程序页面,因此耗时会增加一些。并且,用户会看到前一个页面闪一下,然后出现新页面。

方法三

首先,让webview做条件渲染:

<web-view wx:if="{{ webviewUrl }}" src="{{ webviewUrl }}" />
登录后复制

需要刷新时,先把webviewUrl设为空,销毁当前webview。然后再把webviewUrl设为当前值。如下:

  refreshWebview: function () {
    let tmpUrl = this.data.webviewUrl;
    this.setData({
      webviewUrl: &#39;&#39;
    });
    setTimeout(() => {
      this.setData({
        webviewUrl: tmpUrl
      })
    }, 100);
  }
登录后复制

这样便可以在不影响导航栏历史的情况下刷新页面,也可以是跳转url。
这里setData之后,页面内容的更新应该是异步执行的,因此我们后一次修改url需要延时一小段时间,否则会出现error。
猜测setData后页面实际更新应该是在下一次的requestAnimationFrame,因此如果页面完全不卡顿可能16ms就可以了,保险起见,我设了100ms。

小结

目前我了解到的情况来看,确实没有一个简单的API可以直接无副作用地刷新小程序webview。方法三是我自己摸索出来的办法。但是总觉得这么个简单的问题应该有更直接的做法才对,奇怪。

相关文章:

微信小程序中的下拉刷新和上拉加载的实现方法详解

JS刷新父窗口的几种方式小结

以上就是微信小程序更新webview页面的三种方法的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号