小程序内嵌h5

背景了解

小程序web-view组件文档

阅读文档我们发现,要想实现h5页面在小程序的嵌套需要以下几个步骤:

  1. 登录小程序管理后台配置域名白名单
  2. 要想区分环境做兼容处理可以区分环境
  3. 使用postMessage实现h5页面向小程序的数据传递

准备工作

配置业务域名

到这里,你可以随意写个h5页面在小程序中打开了,但是真正做需求的时候可能会遇到一些问题,如下:

开发中的一些经验

  • url中带着参数

    请务必给对url进行encode, 否则url中带的参数解析不出来

  • 区分h5和小程序做兼容

例如我的h5页面带着header,但小程序中自带header,这是就要区分环境,在小程序的环境中把header去掉。

在你的h5项目中引入小程序提供的js,并根据API区分环境

<script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>


        // 小程序内不显示头
		wx.miniProgram.getEnv((res) => {
			if (res.miniprogram) {
				this.setState({
					isWXapp: true
				})
			} else {
				this.setState({
					isWXapp: false
				})
			}
		});
复制代码
  • h5页面像小程序发送消息

    我的需求有分享给朋友的模块,在h5页面我们只需调用hySDK即可,这是底层封装好的功能。但内嵌入小程序之后就无法实现这一功能,这个内嵌的h5页面想要分享,唯一的办法是指引用户点击小程序右上角的 ... 去分享。

    由于分享出去的文案和图片是后端返回的,可配置的,因此,需要使用postMessage

    在h5中postMessage 注意,key必须叫做data,否则取不到

    // 向小程序传递分享链接
    			wx.miniProgram.postMessage({data:{
    				shareUrl: bgShareUrl,
    				shareDes: bgShareDes
    			}});
    复制代码

在小程序页面的js中getMessage

// wxml
<block wx:if="{{show}}">
<web-view src="{{url}}" bindmessage="getMessage"></web-view> </block>

// js
 getMessage(e) {
   	let {shareUrl, shareDes} = e && e.detail && e.detail.data[0];
       this.setData({
           shareUrl: shareUrl,
		shareDes: shareDes
       });
   }复制代码


这样就实现了h5向小程序的数据通信

  • 登录信息不同步
    这个在common模块提供的web-view组件中已经提供了解决思路,如果需要openId会将获取到的openId作为url的参数传递给h5页面
// 如果需要openId 并且已经登录 再传递openId到页面
		if (this.needOpenId && app.cookies._q && app.user.openId ) {
			url.search ? url.search += `&openId=${encodeURIComponent(app.user.openId)}` : url.search = `openId=${encodeURIComponent(app.user.openId)}`;
		}复制代码


小程序内嵌H5实现地图选址的方法有多种,我来介绍一种常用的方式。 首先,我们需要在小程序中创建一个button按钮,用户点击该按钮后会跳转到H5页面。可以通过小程序的wx.navigateTo函数实现页面跳转,并传递参数给H5页面。 在H5页面中,我们可以引入地图相关的JavaScript库,例如百度地图API或者高德地图API。通过调用API提供的函数和方法,可以实现在H5页面上显示地图,并提供选址的功能。 在地图上选址的过程中,可以使用地图API提供的搜索功能,让用户输入关键字,然后根据关键字在地图上搜索相关位置,并在地图上标注出搜索结果。用户可以在搜索结果中选择一个位置作为选址。 当用户在H5页面上选中了一个位置后,可以通过调用JavaScript代码的方式将选中的位置信息传递给小程序。在H5页面中,可以使用window.location.href实现页面跳转,并将选中的位置信息作为url参数传递给小程序。 在小程序中,可以通过wx.navigateBack函数回到上一个页面,并通过上一个页面的参数接收选中的位置信息。然后,可以使用这些位置信息在小程序中进行相应的处理,例如显示选址结果、保存选址信息等。 综上所述,通过小程序内嵌H5实现地图选址的步骤为:小程序中创建按钮 → 跳转到H5页面并传递参数 → H5页面显示地图并实现选址功能 → 用户选中位置并将选中位置信息传递给小程序小程序接收选中位置信息并进行相应处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值