在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 的加载耗时)
问题解决了,多谢大神指导!
<script
type="text/javascript"
src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"
></script>
我在电脑上调试都跳转不到小程序,报错原因是:无法读取属性:“navigateTo”,请问您知道是因为什么原因吗???
电脑上我没有出现,你有引入jssdk吗?
引入jssdk我只在html里面加了一句话:
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
可以吗?还是需要配置什么呢??
可以的,可以截图看下你的调用方式吗,这样不好定位问题
如下,首先判断h5是否在小程序环境内,如果h5在小程序环境,当用户按下了支付按钮后,就跳转到小程序自己的支付页面(pay),自己的支付页面已经调试成功,可以支付。
不要有alert,我也试过有alert就不会跳转了
我的h5里也偶然出现,我的拦截返回的是这个错误,怀疑是jssdk没有初始化完成导致的,有什么解决办法么
你用什么工具拦截的?
报错信息是什么?提供一下能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
关键是没有报任何错,只是微信没有响应跳转事件
这个只在ios真机上出现,开发者工具试了很多次都是没有问题的,真机上有什么方法调试webview页面么,在h5页面调用wx.miniProgram.navigateTo 之前有alert也不会触发跳转,但是我用console.log在真机上又看不到调试信息
麻烦上传一下日志 在 我->设置->帮助与反馈右上角有个上报日志的入口, 麻烦提供一下微信号以及出问题的具体日期和时间
日志已上传
具体时间在今天上午10点之后到下午3点,因为这段时间一直在调试,经常签署几个单之后就不行了