自用笔记:由于人员、时间问题,通常会有小程序内嵌WebView的需求。这里将整理讲解、注意事项。
概况
web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面。个人类型与海外类型的小程序暂不支持使用。
属性:src 是String类型,是一个网站的url,默认值是none,webview 指向网页的链接。需登录小程序管理后台配置域名白名单。
固定指向
1 | <!--微信小程序index.wxml--> |
创建view壳
├── view.wxml
└── view.js
view.wxml
1 | <!--pages/view/view.wxml--> |
view.js
1 | wx.navigateTo({ |
动态设置顶栏
1 | // url 通常为转码后的地址 |
地址过滤
地址参数必须encodeURIComponent加密才可以传输
1 | _getViewSrc (url) { |
分享页面配置
onShareAppMessage
1 | onShareAppMessage (e) { |
页面消息透传
1 | viewMessage (e) {} |
空白的页面
从webview页面返回小程序页面(导航栏返回),会先出现一个空白页面,然后再次点击返回才能到小程序页面。(两次点击)
- 这个问题大概就是,默认过来
src
的值是空,导致页面第一页为空页面,然后进入到正确的页面。 - 请升级微信客户端到 6.5.16
web-view采坑
- 打开的域名没有在小程序管理后台设置业务域名(注意是业务域名,不是服务器域名)
- 打开的页面必须为https服务
- 打开的页面302过去的地址也必须设置过业务域名
- web-view空白问题,请升级微信客户端到 6.5.16
- 页面可以包含iframe,但是iframe的地址必须为业务域名
- web-view不支持支付能力,web-view的API能力见web-view的文档说明
- 开发者自己检查自己的https服务是否正常,测试方法:普通浏览器打开对应的地址
- 如果web-view使用了公众号授权的服务,开发者工具提示网页开发者的问题,请见:公众号开发
- 关于小程序和web-view的通信,
<web-view/>
→ 小程序只能通过JSSDK 1.3.0提供的接口返回小程序页面,设置参数来传值,反之,小程序到webview也是一样的,只能是src的路径带上参数
H5回调小程序
如何从H5回到小程序
wx.miniProgram.navigateTo
1 | import wx from '~/utils/sdk-wechat.js' |
环境检测
1 | wx.miniProgram.getEnv(res => { |
向小程序发送消息
对消息组件进行封装,添加支付,弹窗,提示,分享等原生接口。
1 | share () { |
postMessage
需要配合bindmessage
使用
分享