小程序webview我爱死你了 小程序webview和H5通讯

webview 我 *

众所周知,将已上线的H5页面转换为小程序,最快的方法是通过WebView进行套壳。然而,在这个过程中,我们需要将H5页面的登录和支付功能迁移到小程序版本。这意味着H5页面需通过特定的方式与小程序进行通信,以实现如支付等关键功能。

因此需要了解H5与WebView之间的通讯方式,以确保数据的顺利传递和功能的无缝对接。

找了很久发现H5与WebView的通讯方式主要有两种

  1. 小程序通过改变H5地址栏携带参数
  2. WebSocket实时通讯

而webview自带的bindmessage、bindload、binderror,触发条件只有小程序后退、组件销毁、分享、复制链接,给我卡的死死的,只好选择了第一种方式,WebSocket虽然可以实现实时通讯,但会增加额外的开销,不符合我的需求。

这里的URL域名必须添加到 小程序后台中-管理-业务域名内,否则会报无法打开 xxx 页面,个人小程序是没有这个选项的,需要申请成企业小程序

小程序向H5通讯

小程序端

js 复制代码
<view class="content">
		<web-view :src="url"></web-view>
	</view>

H5端

js 复制代码
// 判断当前页面的 URL 是否包含 'userInfo',用于识别是否来自小程序端
if (window.location.href.includes('userInfo')) {  
    // 匹配 URL 中的 userInfo 参数
    const userInfoRegex = /userInfo=([^]*)/; 

    // 解码
    const decodedUrl = decodeURIComponent(window.location.href); 

    // 使用正则表达式从解码后的 URL 中提取参数值
    const userInfoMatch = decodedUrl.match(userInfoRegex);
    let auth_token =  userInfoMatch[1];
    localStorage.setItem('loc_token', auth_token);
}
H5向小程序通讯

小程序端

js 复制代码
onMounted(() => {
	const paymentData = getCurrentPages().pop().options.paymentData // 获取当前页面参数
	submitInfo(paymentData);
	});

H5端

js 复制代码
 wx.miniProgram.navigateTo({
          url: `/pagesMember/pay/pay?paymentData=${payInfo.value}`,
        })

通讯限制也就算了,导航栏不能自定义,还不让去掉,这让自带导航栏显得极其突兀!我 * !!!

navigationStyle: custom对 web-view 组件无效 一句话干碎我的摸鱼梦,领导要把那块做成透明的,没办法只好把常用页面重构, but小程序不支持elementPlus啊,太爽了家人们。

相关推荐
hedley(●'◡'●)20 分钟前
基于cesium和vue的大疆司空模仿程序
前端·javascript·vue.js·python·typescript·无人机
qq5_81151751522 分钟前
web城乡居民基本医疗信息管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
百思可瑞教育23 分钟前
构建自己的Vue UI组件库:从设计到发布
前端·javascript·vue.js·ui·百思可瑞教育·北京百思教育
百锦再23 分钟前
Vue高阶知识:利用 defineModel 特性开发搜索组件组合
前端·vue.js·学习·flutter·typescript·前端框架
CappuccinoRose1 小时前
JavaScript 学习文档(二)
前端·javascript·学习·数据类型·运算符·箭头函数·变量声明
这儿有一堆花1 小时前
Vue 是什么:一套为「真实业务」而生的前端框架
前端·vue.js·前端框架
全栈前端老曹1 小时前
【MongoDB】深入研究副本集与高可用性——Replica Set 架构、故障转移、读写分离
前端·javascript·数据库·mongodb·架构·nosql·副本集
NCDS程序员2 小时前
v-model: /v-model/ :(v-bind)三者核心区别
前端·javascript·vue.js
夏幻灵2 小时前
CSS三大特性:层叠、继承与优先级解析
前端·css
小杨同学呀呀呀呀2 小时前
Ant Design Vue <a-timeline>时间轴组件失效解决方案
前端·javascript·vue.js·typescript·anti-design-vue