小程序打开h5页面,并实现H5与小程序的通信

举报
拿我格子衫来 发表于 2022/03/18 01:02:44 2022/03/18
【摘要】 在小程序中打开H5页面,需要使用web-view组件 web-view组件是承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用。   会自动铺满屏幕,意思就是说你的页面只要有了web-view组件,其他内容就显示不出来啦   需要注意的是 src如果有中文会显示白屏 最好使用encode...

在小程序中打开H5页面,需要使用web-view组件

web-view组件是承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用。

 

会自动铺满屏幕,意思就是说你的页面只要有了web-view组件,其他内容就显示不出来啦

 

需要注意的是 src如果有中文会显示白屏 最好使用encodeURIComponent转义一下url

 

此组件有几个参数分别 如下

属性 类型 默认值 必填 说明 最低版本
src string   webview 指向网页的链接。可打开关联的公众号的文章,其它网页需登录小程序管理后台配置业务域名。 1.6.4
bindmessage eventhandler   网页向小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息。e.detail = { data },data是多次 postMessage 的参数组成的数组 1.6.4
bindload eventhandler   网页加载成功时候触发此事件。e.detail = { src } 1.6.4
binderror eventhandler   网页加载失败的时候触发此事件。e.detail = { src } 1.6.4

 

web-view网页中可使用JSSDK 1.3.2提供的接口返回小程序页面。 支持的接口有:

接口名 说明 最低版本
wx.miniProgram.navigateTo 参数与小程序接口一致 1.6.4
wx.miniProgram.navigateBack 参数与小程序接口一致 1.6.4
wx.miniProgram.switchTab 参数与小程序接口一致 1.6.5
wx.miniProgram.reLaunch 参数与小程序接口一致 1.6.5
wx.miniProgram.redirectTo 参数与小程序接口一致 1.6.5
wx.miniProgram.postMessage 向小程序发送消息,会在特定时机(小程序后退、组件销毁、分享)触发组件的message事件 1.7.1
wx.miniProgram.getEnv 获取当前环境 1.7.1

 

Bug & Tip

  1. tip网页内 iframe 的域名也需要配置到域名白名单。
  2. tip:开发者工具上,可以在 web-view 组件上通过右键 - 调试,打开 web-view 组件的调试。
  3. tip:每个页面只能有一个 web-viewweb-view 会自动铺满整个页面,并覆盖其他组件。
  4. tipweb-view 网页与小程序之间不支持除 JSSDK 提供的接口之外的通信。
  5. tip:在 iOS 中,若存在JSSDK接口调用无响应的情况,可在 web-view 的 src 后面加个#wechat_redirect解决。
  6. tip:避免在链接中带有中文字符,在 iOS 中会有打开白屏的问题,建议加一下 encodeURIComponent

 

官方链接

https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html

 

 

案例代码如下

 


  
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta name="viewport" content="width=device-width,initial-scale=1">
  5. </head>
  6. <body>
  7. 我是H5页面的内容
  8. <button onclick="sendmsg()">点我可以让小程序切换页面</button>
  9. <script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
  10. <script>
  11. function ready() {
  12. console.log(window.__wxjs_environment === 'miniprogram') // true
  13. }
  14. if (!window.WeixinJSBridge || !WeixinJSBridge.invoke) {
  15. document.addEventListener('WeixinJSBridgeReady', ready, false)
  16. } else {
  17. ready()
  18. }
  19. function sendmsg () {
  20. console.log('点击发送消息')
  21. wx.miniProgram.navigateTo({url: '/pages/logs/logs'}) // 跳转小程序的页面
  22. // 网页向小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息。
  23. // e.detail = { data },data是多次 postMessage 的参数组成的数组
  24. // wx.miniProgram.postMessage({ data: { foo: 'bar' } })
  25. }
  26. </script>
  27. </body>
  28. </html>

 


  
  1. <!--index.wxml-->
  2. <view class="container">
  3. <web-view src="http://192.168.3.86:8000/" bindmessage="bindMessage"></web-view>
  4. </view>

 

文章来源: fizzz.blog.csdn.net,作者:拿我格子衫来,版权归原作者所有,如需转载,请联系作者。

原文链接:fizzz.blog.csdn.net/article/details/106014993

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。