微信小程序如何巧妙嵌入H5页面!

前言

      微信小程序中嵌入H5页面通常指的是在小程序中使用Web-view组件来加载外部的网页。而要实现小程序与H5页面的通讯,一般通过URL参数传递或者使用微信的JS-SDK。

      但是要使用该功能需要小程序是通过微信认证并且需要再小程序的开发设置里面,找到业务域名,按照要求来验证服务器才可以使用web-view组件。

 

web-view组件文档:

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

JS-SDK文档:

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 

业务域名配置说明:业务域名设置--校验文件检查失败自查指引 | 微信开放社区 (qq.com) 

微信小程序

在小程序的某个页面中使用Web-view组件来加载H5页面 

<web-view src="{{h5Url}}" bindmessage="handleMessage"></web-view>

其中h5Url是你想要加载的H5页面的URL 

h5Url: 'https://baidu.com/?param1=value1&param2=value2' 

bindmessage,处理H5页面通过postMessage发送过来的消息 

handleMessage(e) {
    // 处理H5页面通过postMessage发送过来的消息
    console.log(e.detail.data);
}

传递参数到H5页面

通过URL参数的方式将参数传递给H5页面。在H5页面中,你可以使用JavaScript的window.location对象来获取这些参数。

// H5页面中的JavaScript代码
const queryParams = new URLSearchParams(window.location.search);
const param1 = queryParams.get('param1');
const param2 = queryParams.get('param2');

H5页面

引入

//微信JS-SDK
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
//测试用的vconsole
<script src="https://cdn.bootcss.com/vConsole/3.2.0/vconsole.min.js"></script>

H5页面调用微信小程序方法

由于安全限制,H5页面无法直接调用微信小程序的方法,但可以通过Web-view组件的postMessage方法向小程序发送消息,然后小程序在bindmessage事件中处理这些消息。

// H5页面中的JavaScript代码
window.wx.miniProgram.postMessage({ data: { action: 'yourAction', data: 'yourData' } });


// 在小程序页面中:
Page({
  // ...
  handleMessage(e) {
    const { action, data } = e.detail.data;
    // 根据action执行相应的操作,处理data
    if (action === 'yourAction') {
      // 执行你的操作
    }
  }
});

 window.wx.miniProgram是微信提供的全局对象,它允许H5页面与小程序进行交互。但需要注意的是,不是所有的网页都可以使用这个对象,只有被嵌入到微信小程序中的H5页面才能使用它。注意:

  • 需要注意的是,Web-view组件加载的页面必须是一个完整的URL,不能是本地HTML文件。

  • 由于安全限制,H5页面和小程序之间的交互受到一定的限制。因此,在设计交互逻辑时,应尽量避免复杂的交互操作,确保数据的安全性和隐私性。

  • 另外,不同版本的微信可能对Web-view组件的支持和限制有所不同,因此在实际开发中需要关注微信官方文档中关于Web-view组件的最新说明和要求。

 

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是微信小程序webview嵌入h5页面调用微信支付的完整代码: HTML页面: ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>微信支付demo</title> </head> <body> <button onclick="callPay()">微信支付</button> <script type="text/javascript"> function callPay() { // 构造支付参数 var params = { appId: '你的appId', timeStamp: '时间戳', nonceStr: '随机字符串', package: '预支付交易会话标识', signType: 'MD5', paySign: '支付签名' }; // 调用微信支付接口 WeixinJSBridge.invoke('getBrandWCPayRequest', params, function(res){ // 支付结果处理 if(res.err_msg == "get_brand_wcpay_request:ok"){ // 支付成功 }else{ // 支付失败 } }); } // 判断是否在微信内置浏览器中打开 if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', callPay, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', callPay); document.attachEvent('onWeixinJSBridgeReady', callPay); } }else{ callPay(); } </script> </body> </html> ``` 小程序页面: ``` <web-view src="https://你的H5页面地址"></web-view> ``` 小程序JS代码: ``` Page({ onReady: function () { // 获取web-view组件 var webview = this.selectComponent("#webview"); // 监听web-view中的页面加载完成事件 webview.onMessage(function(e){ if(e.detail == 'loadFinish'){ // web-view中的页面加载完成后,调用支付接口 wx.request({ url: 'https://你的支付接口地址', method: 'POST', data: { // 构造支付参数 appId: '你的appId', timeStamp: '时间戳', nonceStr: '随机字符串', package: '预支付交易会话标识', signType: 'MD5', paySign: '支付签名' }, success: function(res){ // 将支付参数传递给web-view中的页面 webview.postMessage({type: 'pay', data: res.data}); } }) } }) } }) ``` 需要注意的是,在小程序中调用微信支付接口需要在小程序后台配置支付授权目录,否则会出现调用失败的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耀南.

你的鼓励将是我最最最最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值