在ios中,webview里面调用wx.miniProgram.navigateTo偶尔不生效,签署完合同之后,跳转到小程序内部的支付页面,有时候不能自动跳转,并且之后点击按钮多次,仍不能触发跳转。
在h5页面打印出来wx.miniProgram 是有对象存在的,但是wx.miniProgram.navigateTo就是偶尔不跳转,一般重复5次以内必有一次不跳转。
现在这个问题已经影响到公司业务发展了,合同签署之后不能直接付款,还要用户手动返回,再在付款入口去付款,体验很差。
(ps:这个功能线上之前一直在用,并且是好的,微信近几个月的新版本是不是修改了什么导致了这个问题?)
问题总结:
开发者页面中的 web-view 组件加载后,加载下个 URL 对应的页面中,带有独立的 iframe, iframe 的加载有一定概率会引发 iOS微信上 web-view 组件错过注入 JSBridge 的时机,导致 wx.miniProgram 及其他 JSSDK api 调用无反应。
解决方案:
iOS 微信预计在 6.7.5 版本修复该问题;
在这之前带有 iframe,并偶现该问题的页面,可尝试页面加载时延迟加载 iframe
若 web-view 组件上有问题的 URL 中,并没有带上 fragment ,可尝试带上 #wechat_redirect ,如 https://developers.weixin.qq.com/community/develop/doc/0006882d318250280397f77645b000#wechat_redirect,通过同步注入 JSBridge 来解决这个问题(会增加页面大约 200ms 的加载耗时)