当前位置: 首页 > news >正文

微信小程序和H5之间互相跳转、互相传值

最近又开始写小程序了,刚好遇到微信小程序和内嵌 H5 之间来回跳转,来回交互;这里记录一下微信小程序和 H5 之间交互的实现;(我的小程序是通过 un-app 框架来写的,内部代码基本都是 vue)

文章目录

        • 一、微信小程序跳转 H5
          • 1、web-view
        • 二、H5跳微信小程序
          • 1、H5 直接跳到微信小程序
          • 2、内嵌H5跳转到微信小程序
        • 三、微信小程序传值给内嵌H5
          • 1、路径传参
        • 四、内嵌H5传值给微信小程序
          • 1、用 postMessage
          • 2、路径传参

一、微信小程序跳转 H5

1、web-view

微信小程序官方提供了 web-view 组件来实现微信小程序跳转到 H5 页面,实现的方式也很简单,具体实现方式如下:
1、新建一个页面用来单独存放 web-view 组件,并且所有的内嵌 H5 都可以通过这个页面来实现跳转;

//web-view
<web-view :src="url"></web-view>
export default{
	data(){
		return{
			url:''
		}
	},
	onLoad(option){
		this.url = option.url
	}
}

其他小程序页面跳转只需要将 H5 的地址拼接在路径上;

//其他小程序页面
let url = 'xxxx';
uni.navigateTo({
	url: `/pages/webview/webview?url=${url}`
})

二、H5跳微信小程序

H5 往微信小程序跳转需要借助微信 JS-SDK(官方文档),官方提供的是引入 js 文件的方式来使用微信 JS-SDK;当然在 vue 的项目里我们还可以以依赖的方式来安装:weixin-js-sdk;

1、H5 直接跳到微信小程序

可以借助微信 sdk 里面的标签( wx-open-launch-weapp)直接跳转;不过这种方式需要申请配置:

  1. 已认证的服务号(公众号),服务号绑定“JS接口安全域名”下的网页可使用此标签跳转任意合法合规的小程序。
  2. 已认证的非个人主体的小程序,使用小程序云开发的静态网站托管绑定的域名下的网页,可以使用此标签跳转任意合法合规的小程序。
<wx-open-launch-weapp
  id="launch-btn"
  username="gh_xxxxxxxx"
  path="pages/home/index?user=123&action=abc"
>
  <script type="text/wxtag-template">
    <style>.btn { padding: 12px }</style>
    <button class="btn">打开小程序</button>
  </script>
</wx-open-launch-weapp>

这种方式可以跳转到任何小程序,不过需要用户的点击操作才能跳转,跳转的同时,H5页面可以把需要传递的参数通过 path 路径拼接的方式将参数传递过去;
可参考:开发标签说明文档

2、内嵌H5跳转到微信小程序

这种不需要配置,直接就可以通过微信 sdk 提供的方法来实现跳转;注意:只能跳转回当前小程序;

wx.miniProgram.navigateTo({url:''})
wx.miniProgram.navigateBack({url:''})
wx.miniProgram.switchTab({url:''})
wx.miniProgram.reLaunch({url:''})
wx.miniProgram.redirectTo({url:''})

完整的操作应该是:

//先判断当前环境是小程序环境
wx.miniProgram.getEnv(function(res){
	if(res.miniprogram){
		//跳转到小程序页面
		wx.miniProgram.navigateTo({
			url:"/pages/xxx"
		})
	}
})

三、微信小程序传值给内嵌H5

1、路径传参

小程序直接通过修改 web-view 的 src 属性就行了,将需要传递的参数拼接在路径上,H5 页面之间通过 query 来拿参数;

//其他小程序页面
let url = 'xxxx?name=xxx&number=123';
uni.navigateTo({
	url: `/pages/webview/webview?url=${url}`
})

四、内嵌H5传值给微信小程序

以下两种方式都需要在 H5 的 index.html 页面引入下面 js:

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
1、用 postMessage

在 web-view 组件上有一个属性 bindmessage ,网页向小程序 postMessage 时会触发并接收消息;

//web-view
<web-view :src="url" @message="getMessage"></web-view>
export default{
	data(){
		return{
			url:''
		}
	},
	onLoad(option){
		this.url = option.url
	}
	methods:{
		getMessage(e){
			//接收参数,也可以跳转到小程序其他页面将参数传递过去
			console.log(e.detail)
		}
	}
}
//H5页面
wx.miniProgram.postMessage({ data: {name: 'xxx'} })
2、路径传参

调用微信 wx.miniProgram API 跳转到小程序页面时,通过路径拼接把参数传递过去;

wx.miniProgram.navigateTo({
  url:"/pages/xxx/xxx/xxx?name=xxx"
});

相关文章:

  • web前端期末大作业 html+css家乡旅游主题网页设计 湖北武汉家乡介绍网页设计实例
  • PS-HDR图像编辑与应用
  • 2022亚太杯C题思路代码分析
  • 涨知识!Python 的异常信息还能这样展现
  • JDBC编程
  • HTML+CSS期末大作业 中国传统美食网站设计 节日美食13页 html5网页设计作业代码 html制作网页案例代码 html大作业网页代码
  • 基于Java+Spring+Vue+elementUI大学生求职招聘系统详细设计实现
  • matlab在管理学中的应用简matlab基础【二】
  • 【安装Ubuntu18.04遇到的问题】未找到WIFI适配器
  • 发明专利与实用新型专利的不同
  • 【Educoder作业】CC++数组实训
  • Qt+Win10使用QAxWidget控件实现远程桌面控制
  • java毕业设计现有传染病查询系统mybatis+源码+调试部署+系统+数据库+lw
  • C++ 语法基础课4 —— 数组
  • 【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • chrome扩展demo1-小时钟
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Iterator 和 for...of 循环
  • Java IO学习笔记一
  • JavaScript设计模式系列一:工厂模式
  • react 代码优化(一) ——事件处理
  • SSH 免密登录
  • 聚簇索引和非聚簇索引
  • 理清楚Vue的结构
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 深入浅出Node.js
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 一文看透浏览器架构
  • linux 淘宝开源监控工具tsar
  • 整理一些计算机基础知识!
  • #pragma once与条件编译
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (原)本想说脏话,奈何已放下
  • (转载)从 Java 代码到 Java 堆
  • .net 流——流的类型体系简单介绍
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net 中viewstate的原理和使用
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net程序集学习心得
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET连接数据库方式
  • :not(:first-child)和:not(:last-child)的用法
  • ?.的用法
  • [ C++ ] STL---string类的使用指南
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • [BUUCTF]-Reverse:reverse3解析
  • [BZOJ 3282] Tree 【LCT】