webview里调用wx.miniProgram.navigateTo偶尔不生效
发布于 6 年前 作者 xiulan33 14810 次浏览 来自 问答

在ios中,webview里面调用wx.miniProgram.navigateTo偶尔不生效,签署完合同之后,跳转到小程序内部的支付页面,有时候不能自动跳转,并且之后点击按钮多次,仍不能触发跳转。

在h5页面打印出来wx.miniProgram 是有对象存在的,但是wx.miniProgram.navigateTo就是偶尔不跳转,一般重复5次以内必有一次不跳转。


现在这个问题已经影响到公司业务发展了,合同签署之后不能直接付款,还要用户手动返回,再在付款入口去付款,体验很差。


(ps:这个功能线上之前一直在用,并且是好的,微信近几个月的新版本是不是修改了什么导致了这个问题?)

4 回复

我在电脑上调试都跳转不到小程序,报错原因是:无法读取属性:“navigateTo”,请问您知道是因为什么原因吗???

问题总结:

开发者页面中的 web-view 组件加载后,加载下个 URL 对应的页面中,带有独立的 iframe, iframe 的加载有一定概率会引发 iOS微信上 web-view 组件错过注入 JSBridge 的时机,导致 wx.miniProgram 及其他 JSSDK api 调用无反应。

解决方案:

  1. iOS 微信预计在 6.7.5 版本修复该问题;

  2. 在这之前带有 iframe,并偶现该问题的页面,可尝试页面加载时延迟加载 iframe

  3. 若 web-view 组件上有问题的 URL 中,并没有带上 fragment ,可尝试带上 #wechat_redirect ,如 https://developers.weixin.qq.com/community/develop/doc/0006882d318250280397f77645b000#wechat_redirect,通过同步注入 JSBridge 来解决这个问题(会增加页面大约 200ms 的加载耗时)

报错信息是什么?提供一下能复现问题的代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

我的h5里也偶然出现,我的拦截返回的是这个错误,怀疑是jssdk没有初始化完成导致的,有什么解决办法么

回到顶部