微信小程序> 微信小程序webview:网页与小程序间通信限制

微信小程序webview:网页与小程序间通信限制

浏览量:9371 时间: 来源:超频化石鱼

当前微信小程序的调试基础库最新版本为2.3.0。

web-view可用于在小程序中内嵌网页。只要符合官方的条件,为web-view设置src属性来指定网页即可在小程序中显示。一个页面只能有一个web-view,且会自动铺满整个小程序页面。

因此,对于那些只需要进行显示的页面,例如公司官网等,该组件省去了小程序开发的麻烦,直接内嵌显示即可。当然页面最好对移动端做了适配。

 

然而,若希望与小程序进行通信交互,限制就比较大了。

当前有个需求,需要制作一个微信小程序,一方面需要调用小程序的蓝牙功能,另一方面需要使用一些小程序已删除的js功能。

于是有了如下思路:

  • 使用常规网页实现小程序删除的那部分js功能。
  • 使用web-view将网页内嵌到小程序中显示。
  • 网页与小程序之间进行数据的交互。
  • 使用小程序调用蓝牙功能。

思路正常,但无法实现,关键卡在网页与小程序之间进行数据的交互这一步上。

网页与小程序之间进行数据的交互有两部分:

  1. 小程序→网页

官网没有提供发送的接口,只能通过修改web-view的src属性,使用&来附加参数,并在网页中解析参数。

这一点可以做到。只是这意味着小程序每次向网页传参,都要刷新一次网页。

  1. 网页→小程序

官方文档只提供了一种方式:

  • 在web-view中添加bindmessage属性,并绑定一个函数,用于监听网页发来的消息。
  • 在网页中引入jweixin-x.x.x.js,然后调用wx.miniProgram.postMessage()来向小程序发送数据。

然而,实际上官方文档特意对bindmessage进行了说明:网页向小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息。

也就是说,这唯一的一种通信方式,并不是按照常规的思路“网页向小程序发送数据,然后小程序监听到并执行回调”运作的,只有(小程序后退、组件销毁、分享)这三种情况下,bindmessage才会被触发并接收消息。

所以,即使在网页中调用了wx.miniProgram.postMessage(),小程序也不会立即响应,bindmessage所绑定的函数不会执行。

 

虽然网页和小程序之间即时传参无法实现,不过小程序可以通过web-view的src属性来切换网页,网页也可以通过wx.miniProgram.navigateTo()来切换小程序的页面。这些功能都是微信通过JSSDK为web-view所内嵌的网页提供的支持,但仅仅是提供了一部分JSSDK的功能,限制同样很多。

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎