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

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

 

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

 

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

 

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

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

 

 

案例代码如下

 

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width,initial-scale=1">
  </head>
  <body>
    我是H5页面的内容
    <button onclick="sendmsg()">点我可以让小程序切换页面</button>

    <script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
    <script>
      function ready() {
        console.log(window.__wxjs_environment === 'miniprogram') // true
      }
      if (!window.WeixinJSBridge || !WeixinJSBridge.invoke) {
        document.addEventListener('WeixinJSBridgeReady', ready, false)
      } else {
        ready()
      }
      function sendmsg () {
        console.log('点击发送消息')
        wx.miniProgram.navigateTo({url: '/pages/logs/logs'}) // 跳转小程序的页面
        // 网页向小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息。
        // e.detail = { data },data是多次  postMessage 的参数组成的数组
        // wx.miniProgram.postMessage({ data: { foo: 'bar' } }) 
      }
    </script>
  </body>
</html>

 

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

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐