微信小程序中web-view的使用,实现小程序与h5页面间跳转

微信小程序文档中提到,web-view组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面。web-view的出现,可以缓解小程序size告急的问题。

web-view的使用方法:

<!-- wxml -->
<!-- 指向微信公众平台首页的web-view -->
<web-view src="https://mp.weixin.qq.com/"></web-view>

src是一个网站的url,默认值是none,webview指向网页的链接。

web-view是如何进行小程序和h5通信的:

1. 小程序到web-view本质上WEB-VIEW也是小程序的一个页面,所以小程序到web-view是正常的小程序间的通信,通过wx.navigateTowx.redirectTo,带上url参数,query参数就像正常url的参数一样跟着后面,然后在web-view的页面的Page实例里面通过onLoad的方法的参数来获取url的值,设置给web-viewsrc属性为改值即可。

// 点击banner进入页面详情
goPageDetail(e) {
    const { url, h5 } = e.currentTarget.dataset;
    if (url !== '/') {
      wx.navigateTo({
        url
      });
    } else {
      wx.navigateTo({
        url: `/pages/article/webview/index?h5=${h5}`
      });
    }
},

 

2.web-view到小程序:由于在web-view的跳转通常是在src对应的网页中的操作来处理的,所以需要结合jssdk来处理,不需要wx.config配置,直接通过script标签来引入https://res.wx.qq.com/open/js/jweixin-1.3.0.js,就可以使用wx.miniProgram.navigateTowx.miniProgram.navigateBackwx.miniProgram.switchTabwx.miniProgram.reLaunchwx.miniProgram.redirectTo接口,就像小程序之间的跳转一样,单是只能在当前小程序页面内跳转。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>h5跳转到小程序页面</title>
</head>
<body>
  <div class="app">
    <p>this is h5页面。</p>
    <button type="button" id="btn">返回小程序</button>
  </div>
  <script src="https://test.com/jquery.js"></script>
  <script src="https://res.wx.qq.com/open/js/jweixin-1.3.0.js"></script>
  <script>
      /* eslint-disable */
    $(function(){
      $('#btn').on('click',function(s) {
        wx.miniProgram.navigateTo({
          url:'/pages/index/index?id=xxx',
          success: function(){
              console.log('success')
          },
          fail: function(){
              console.log('fail');
          },
          complete:function(){
              console.log('complete');
          }

          });
      });
    });
  </script>
</body>
</html>

web-view中踩的坑:

1.打开的域名没有在小程序管理后台设置业务域名(注意是业务域名,不是服务器域名)
2.打开的页面必须为https服务
3.打开的页面302过去的地址也必须设置过业务域名
4.web-view空白问题,请升级微信客户端到 6.5.16
5.页面可以包含iframe,但是iframe的地址必须为业务域名
6.web-view不支持支付能力,web-view的API能力见web-view的文档说明
7.开发者自己检查自己的https服务是否正常,测试方法:普通浏览器打开对应的地址
8.如果web-view使用了公众号授权的服务,开发者工具提示网页开发者的问题,请见:公众号开发
 

uniapp 是一个使用 Vue.js 开发所有前端应用的框架,可以编译到 iOS、Android、H5、以及各种小程序等多个平台。在 uniapp 中开发微信小程序,如果需要嵌套使用 web-view 组件并实现web-view 页面关闭 web-view跳转微信小程序中的页面,可以按照以下步骤进行: 1. 在 web-view 页面中注入微信小程序的 API: 由于 web-view 内的页面是运行在 webview 中的网页,我们需要在网页中注入微信小程序提供的 API,以便能够控制小程序的行为。这通常通过 `wx.miniProgram.qqJSBridge` 或者新的 `wx.miniProgram` 实现。 2. 使用小程序提供的方法关闭 web-view: 在网页中注入微信小程序 API 后,可以通过执行小程序的 `wx.miniProgram.postMessage` 方法发送消息到小程序,然后在小程序端捕获这个消息并执行关闭 web-view 的操作。示例如下: 网页端代码(web-view 内的网页): ```javascript // 假设你已经注入了微信小程序 API 到页面中 // 发送消息给小程序端,请求关闭 web-view wx.miniProgram.postMessage({ data: { action: 'closeWebview' } }); ``` 小程序端代码(用于接收 web-view 中发送的消息并关闭 web-view): ```javascript // 监听来自 web-view 的消息 const webview = plus.webview.currentWebview(); webview.addEventListener('message', function(e) { if (e.data && e.data.action === 'closeWebview') { // 执行关闭 web-view 的操作 // 这里的操作取决于你的业务逻辑 // 可能是关闭当前 web-view 或者跳转到其他页面 // 例如使用 uni.$emit 或者 vuex 等状态管理来控制页面跳转 } }); ``` 3. 跳转微信小程序中的页面: 关闭 web-view 后,你可能需要跳转小程序的某个页面。这可以通过小程序页面跳转 API `wx.navigateTo` 或者其他导航 API 来实现。例如: ```javascript // 跳转小程序的指定页面 wx.navigateTo({ url: '/pages/targetPage/targetPage' }); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值