微信小程序web-view嵌入uni-app H5页面,通过H5页面传参给小程序进行转发分享页面,并通过点击转发出来的卡片,定向打开对应H5路径

简介: 微信小程序web-view嵌入uni-app H5页面,通过H5页面传参给小程序进行转发分享页面,并通过点击转发出来的卡片,定向打开对应H5路径

第一步:uni-app H5页面触发传参→微信小程序

onLoad(d) {
  this.postMessage();
},
methods: {
  postMessage() {
    wx.miniProgram.postMessage({
      data: {
        title: "微信小程序转发分享自定义的标题",//这个是要传给微信小程序的标题
        path: `?a=1&b=2&c=3`,//这个是要传给微信小程序的参数
      }
    })
  },
}

第二步:微信小程序代码,分享页面传参→H5页面

index.wxml

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

index.js

Page({
    data: {
        src: "https://www.shuzhiqiang.com/#/",//注意后面有"/#/"
        shareData: {},
    },
    onLoad(d) {
        if (d && Object.keys(d).length) {
            let p = Object.keys(d).reduce((p, k, i) => p + `${i === 0 ? '?' : '&'}${k}=${d[k]}`, '');
            this.setData({ src: this.data.src + p });// 通过web-view的src路径传参,从微信小程序传参给H5
        }
    },
    // 当点击小程序右上角胶囊“…”的时候接收H5传过来的值
    bindmessage(d) {
        if (d && d.detail && d.detail.data) {
            //console.log('H5传过来的最新信息', JSON.stringify(d.detail.data.slice(-1)[0], null, 2));
            this.setData({ shareData: d.detail.data.slice(-1)[0] });//因为bindmessage推送过来的数据是push的形式,所以最新的数据是在最后
        }
    },   
    // 注意:只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮
    onShareAppMessage() {
        return {
            // 用Promise延时一下,避免bindmessage还未执行完毕,就唤起转发
            promise: new Promise(resolve => {
                setTimeout(() => {
                    resolve({
                        title: this.data.shareData.title,
                        path: `/pages/index/index${this.data.shareData.path}`,//这个path是来自H5页面的传参路径
                    })
                }, 100)
            })
        }
    }
});
wx.showShareMenu({
    withShareTicket: true,
    menus: ['shareAppMessage', 'shareTimeline']// shareAppMessage表示“发送给朋友”按钮,shareTimeline表示“分享到朋友圈”按钮 
})

第三步:打开分享的微信小程序卡片,uni-app H5页面获取参数

在H5项目的App.vue页面获取参数实现自动跳转到对应页面,包括携带的参数值

import wx from "weixin-js-sdk"; //npm install --save weixin-js-sdk 
export default {    
  onLaunch() {
    // 监听各种跳转
    ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab', 'navigateBack', ].forEach(v => {
      uni.addInterceptor(v, {
        success: e => this.watchRouter(e),
      })
    });
    this.watchRouter();
  },
  onShow(d) {
    d = d.query;
    if (d && Object.keys(d).length) {
      let path = d.path;
      delete d.path;
      let p = Object.keys(d).reduce((p, k, i) => p + `${i === 0 ? '?' : '&'}${k}=${d[k]}`, '');
      let url = `${path}${p}`;
      // console.log('跳转路径&参数', url)
      uni.navigateTo({url});
    }
  },
  onHide() {},
  methods: {
    watchRouter(d) {
      wx.miniProgram.postMessage({
        data: {
          title: `自定义标题!`,
          path: ``,
        }
      })
    },
  },
}


相关文章
|
29天前
|
小程序 前端开发 开发者
小程序的页面如何布局?
【10月更文挑战第16天】小程序的页面如何布局?
46 1
|
1月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
220 3
|
2月前
|
JSON 小程序 前端开发
微信小程序的目录结构及页面结构的说明
本文详细介绍了微信小程序的目录结构、页面组成部分以及项目的全局配置文件,阐述了小程序的宿主环境和运行机制,包括小程序启动和页面渲染的过程。
微信小程序的目录结构及页面结构的说明
|
2月前
|
小程序 JavaScript API
微信小程序开发学习之页面导航(声明式导航和编程式导航)
这篇文章介绍了微信小程序中页面导航的两种方式:声明式导航和编程式导航,包括如何导航到tabBar页面、非tabBar页面、后退导航,以及如何在导航过程中传递参数和获取传递的参数。
微信小程序开发学习之页面导航(声明式导航和编程式导航)
|
2月前
|
JSON 小程序 JavaScript
微信小程序页面事件,下拉刷新事件和上拉触底事件
这篇文章介绍了微信小程序中如何实现下拉刷新和上拉触底事件,包括开启下拉刷新、配置下拉刷新样式、监听下拉刷新事件,以及监听上拉触底事件和配置上拉触底的距离。
|
Web App开发 JavaScript 前端开发
Web页面上工作流设计器(silverlight/Flex/Javascript/java Workflow Designer)
最近需要做一个web页面的工作流设计器,调研了一下,具体内容汇总如下,可做大家的使用选型参考。 Silverlight的Workflow Designer ShareDesigner http://sharedesigner.
2037 0
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
105 3
|
19天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
110 45
|
14天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
30 1
|
17天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。