摘要:场景在小程序其它页面做了操作,数据发生改变,回到页面时需要更新里面的数据。由于小程序没有提供与的实时通信能力,因此刷新页面是个可考虑的做法。小结目前我了解到的情况来看,确实没有一个简单的可以直接无副作用地刷新小程序。
场景
在小程序其它页面做了操作,数据发生改变,回到webview页面时需要更新webview里面的数据。由于小程序没有提供与webview的实时通信能力,因此刷新页面是个可考虑的做法。
方法一最常见的做法,修改一下webview的url,加点query参数什么的,页面就会更新了。但是这会增加webview的浏览history,导致用户在后退的时候,会在webview内退到前一个页面,而不是退到小程序的前一个页面。
方法二在小程序内调用wx.redirectTo(OBJECT)方法。这里填当前页面的url。其实是关闭当前页面重新打开,变相达到刷新webview的目的。但是由于重新打开了小程序页面,因此耗时会增加一些。并且,用户会看到前一个页面闪一下,然后出现新页面。
方法三首先,让webview做条件渲染:
需要刷新时,先把webviewUrl设为空,销毁当前webview。然后再把webviewUrl设为当前值。如下:
refreshWebview: function () { let tmpUrl = this.data.webviewUrl; this.setData({ webviewUrl: "" }); setTimeout(() => { this.setData({ webviewUrl: tmpUrl }) }, 100); }
这样便可以在不影响导航栏历史的情况下刷新页面,也可以是跳转url。
这里setData之后,页面内容的更新应该是异步执行的,因此我们后一次修改url需要延时一小段时间,否则会出现error。
猜测setData后页面实际更新应该是在下一次的requestAnimationFrame,因此如果页面完全不卡顿可能16ms就可以了,保险起见,我设了100ms。
目前我了解到的情况来看,确实没有一个简单的API可以直接无副作用地刷新小程序webview。方法三是我自己摸索出来的办法。但是总觉得这么个简单的问题应该有更直接的做法才对,奇怪。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/96641.html
摘要:网页引入网页发起支付由后台返回,主要是需要统一下单平台的微信支付页面支付参数错误,请稍后重试支付成功支付失败支付错误分享功能小程序直接分享的所在的页面,如果需要加上页面参数,那我们就需要处理一下了。 小程序现在越来越流行,但是公司的很多项目都是用网页写的,小程序语法不兼容原生网页,使得旧有项目迁移至小程序代价很高; 小程序之前开放了webview功能,可以说是网页应用的一大福音了,但...
摘要:网页引入网页发起支付由后台返回,主要是需要统一下单平台的微信支付页面支付参数错误,请稍后重试支付成功支付失败支付错误分享功能小程序直接分享的所在的页面,如果需要加上页面参数,那我们就需要处理一下了。 小程序现在越来越流行,但是公司的很多项目都是用网页写的,小程序语法不兼容原生网页,使得旧有项目迁移至小程序代价很高; 小程序之前开放了webview功能,可以说是网页应用的一大福音了,但...
摘要:最近开始接触了小程序的开发,由于时间问题,文档阅读的并不完备,也踩了很多坑。的使用微信小程序不支持原生页面跳转,包括和,若要跳转小程序应用内页面,需要使用,详见。参考文献微信小程序开发者文档 最近开始接触了小程序的开发,由于时间问题,文档阅读的并不完备,也踩了很多坑。不得不说,微信的野心真是越来越大了,但是它超高的流量注定了它有这个资本。 原文地址:mini programs 目...
摘要:最近开始接触了小程序的开发,由于时间问题,文档阅读的并不完备,也踩了很多坑。的使用微信小程序不支持原生页面跳转,包括和,若要跳转小程序应用内页面,需要使用,详见。参考文献微信小程序开发者文档 最近开始接触了小程序的开发,由于时间问题,文档阅读的并不完备,也踩了很多坑。不得不说,微信的野心真是越来越大了,但是它超高的流量注定了它有这个资本。 原文地址:mini programs 目...
阅读 3652·2021-09-02 15:11
阅读 4563·2021-08-16 10:47
阅读 1560·2019-08-29 18:35
阅读 3030·2019-08-28 17:54
阅读 2843·2019-08-26 11:37
阅读 1496·2019-08-23 16:51
阅读 1799·2019-08-23 14:36
阅读 1801·2019-08-23 14:21