uni-app开发微信小程序 web-view通讯

这篇具有很好参考价值的文章主要介绍了uni-app开发微信小程序 web-view通讯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近开发了一个微信小程序嵌套vue页面

vue页面 有时候会使用到微信小程序的api 但是有的api他h5是不支持的

小程序 web-view跟小程序 消息互调,uni-app,微信小程序,前端

 官方文档中提供的两种方法

@message 内嵌的h5页面不支持 Window的postMessage 在h5端使用没啥问题,这该死的uni-app页面不管怎么弄都会报那个window的错  还是我太菜了。。。。

小程序 web-view跟小程序 消息互调,uni-app,微信小程序,前端

 就算是h5端调用uni的postMessage,这东西在h5不支持!不支持!!!!

小程序 web-view跟小程序 消息互调,uni-app,微信小程序,前端

小程序 web-view跟小程序 消息互调,uni-app,微信小程序,前端

 既然他可以调用uni-app的webview的一些方法,我们就利用这个来投机取巧。

在页面入口文件 引入线上地址

我这里就直接使用引用微信的api方法 因为开发的是微信小程序

直接在pulic的index.html文件引入地址

<script type="text/javascript" src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script>

我这里是使用的copy下来的线下地址

小程序 web-view跟小程序 消息互调,uni-app,微信小程序,前端

在任何打印console.log(wx)都会出现下面内容 我们就使用下面红线圈的方法小程序 web-view跟小程序 消息互调,uni-app,微信小程序,前端

会看到有wx.miniProgram.postMessage这个方法,

虽然wx.miniProgram.postMessage会在微信开发工具控制台显示传递的数据

但是我是怎么找我的@message的触动事件中打印东西死活没有,说是需要在uni-app页面特定分

享或者回退才有,啊这也太麻烦了,

 于是,就想了一个歪风邪道的方法,谨慎使用

可以使用路由跳转携带一些参数,然后调用uni的api

就比如我在h5的页面有一个按钮需要跳转其他小程序

小程序 web-view跟小程序 消息互调,uni-app,微信小程序,前端

查询了一下uni的api uni.navigateToMiniProgram(OBJECT)

这个uni.navigateToMiniProgram(OBJECT) 的方法h5端就不支持

小程序 web-view跟小程序 消息互调,uni-app,微信小程序,前端

获取scheme码也只能在h5端打开,不能在web-view嵌套页面过后 通过这个地址再打开其他的小程序

所以歪门邪道方法如下 这只是一个测试页面

 代码如下

<template>
  <div class="ceshi-index">
    <van-button type="primary" block @click="goEle">打开饿了么</van-button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      // 是否处在微信环境中
      isWeiXin: false
    };
  },
  mounted() {
    console.log(wx);

    let ua = window.navigator.userAgent.toLowerCase();

    this.isWeiXin = ua.match(/MicroMessenger/i) == "micromessenger";
  },
  methods: {
    goEle() {
      if (!this.isWeiXin) return console.log("当前环境不支持");
      wx.miniProgram.getEnv(res => {
        if (res.miniprogram) {
          wx.miniProgram.navigateTo({
            url: "/pages/ceshi/index?event=去往饿了么"
          });
        } else {
          //在微信里
        }
      });
    }
  }
};
</script>

<style lang="less" scoped>
.ceshi-index {
  width: 100%;
  height: 100%;
  justify-content: center;
  padding: 0 20px;
  display: flex;
  flex-direction: column;
}
</style>

uni-app项目中搞个中间页面 作为中转站

为什么这么搞,因为调用uni的api中对象基本都有complete函数

就是接口调用结束的回调函数(调用成功、失败都会执行)就是直接使用这个回调 回退到我们的

操作页面,咱们就投机取巧,调用一些api方法过后调用complete回调函数 直接回退页面,返回至

我们的操作页面

uni.navigateBack({
       delta: number
 })

这就是我想的歪风邪道方法,钻空子。

uni-app建立中间页面操作 

<template>
	<view class="">
		<!-- 我是中间网页 -->
	</view>
</template>

<script>
	export default {
		data() {
			return {}
		},
		onLoad(option) {
			this.loadEvent(option);
		},
		methods: {
            //处理多个页面传来事件处理
			loadEvent(option) {
				option = option || {};
				let h5Event = option.event || "";
				switch (h5Event) {
					case "去往饿了么":
                        this.goEle()
						break;
				}
			},
			goEle(){
                //至于为什么不直接调用uni.navigateToMiniProgram(OBJECT)

                //这玩意他必须要页面上有点击按钮才能调用此方法
				uni.showModal({
					title: '温馨提示',
					content: '即将离开某某小程序',
					showCancel: true, //是否显示取消按钮
					cancelText: "取消", //默认是“取消”
					cancelColor: '#000000', //取消文字的颜色
					confirmText: "确定", //默认是“确定”
					confirmColor: '#3cc51f', //确定文字的颜色
					success: function(res) {
						if (res.cancel) {
							uni.navigateBack({
								delta: 1
							});
						} else {
							uni.navigateToMiniProgram({
								// appid  写你要跳转的小程序的 appid
								appId: '',
								// appId: 'wx83ead482e5f13976',
								// 路径写  src下的路径,假如你跳转的是pages下的页面,就可以写pages/index
								path: '',
				
								extraData: {
									'type': 'out'
								},
								envVersion: 'release', //跳转的版本:develop(开发版),trial(体验版),release(正式版)
								success(res) {
									// 打开成功
									// uni.showToast({
									// 	title: '跳转成功'
									// })
								},
								fail(err) {
									// console.log(err)
									// 打开失败/取消
									uni.showToast({
										title: '跳转不成功'
									})
								},
								//接口调用结束的回调函数(调用成功、失败都会执行)
								complete(){
									uni.navigateBack({
										delta: 2
									});
								}
							})
						}
					},
					fail: function(res) {
						uni.navigateBack({
							delta: 1
						});
					},
					//接口调用结束的回调函数(调用成功、失败都会执行)
					complete: function(res) {
						
					},
				})
				
			}
		},


	}
</script>


<style>
</style>

效果如下

小程序 web-view跟小程序 消息互调,uni-app,微信小程序,前端文章来源地址https://www.toymoban.com/news/detail-827538.html

到了这里,关于uni-app开发微信小程序 web-view通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用uni-app开发微信小程序时u-view样式不生效问题

    1.组件自定义样式不生效 需要在前面添加 在存在shadow-root的dom情况下,需要额外在后面添加 view 才能正常修改 2.输入框下面的错误信息提示文字跟输入框不对齐,向右偏一些 定位到对应的元素后,并找到其父节点 给他的父界面下的子节点添加样式修改信息

    2024年02月15日
    浏览(57)
  • uni-app和web-view页面相互传参

    首先:这里说的是uni-app开发的APP项目,嵌入web-view页面,并进行相互传参,如果和您想了解的内容相符,请继续阅读。 一、说到web-view嵌入uni-app开发的APP,传参方面很多人首先会想到url传参。 这种方法是app向webview传参最简单的方式,但也存在许多弊端: 1.参数会被抓取,如

    2024年02月08日
    浏览(52)
  • [uni-app] web-view组件页面添加u-navbar, u-navbar无法显示问题处理

    uni-app 内部调整H5页面 (webview组件),需要条件导航问题 在iOS/Android下, web-view占满了全屏, 此时添加一个 u-navbar/ 在手机端不会显示, 处理办法 javascript部分: html部分:

    2024年02月11日
    浏览(45)
  • 跨平台应用开发进阶(五十)uni-app ios web-view嵌套H5项目白屏问题分析及解决

    应用 uni-app 框架开发好APP上架使用过程中,发现应用经过长时间由后台切换至前台时,通过 webview 方式嵌套的H5页面发生白屏现象。 任何手机设备上,当手机内存不足时,os都会回收资源。一般是先回收后台打开的资源。如果当前应用占用的资源过高,当前应用也有可能崩溃

    2024年02月14日
    浏览(55)
  • uni-app开发微信小程序

    编辑器:HubilderX 运行环境:微信开发者工具 技术栈:uni-app + vue + uView + uCharts + LeanCloud 创建微信小程序项目时,我才用了vue前端框架 PS:用的是HbuilderX编辑器 1. 注册微信小程序 注册完后,获取微信小程序的AppID,并在manifest.json文件配置; 2. 导入uView和uCharts组件库 使用uni-

    2024年02月16日
    浏览(89)
  • 如何使用uni-app开发微信小程序

    uni-app 是一个使用 Vue.js 开发所有前端应用的框架。开发者编写一套代码,可发布到 iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。 详细的 uni-app 官方文档,请翻阅https://uniapp.dcloud.net.cn uni-app 官方推荐使用 HBuilderX 来开发 uni-ap

    2024年02月10日
    浏览(120)
  • UNI-APP开发微信小程序的基本流程

    需提前准备的工具:HBuilder X ,微信开发者工具 登录小程序官网,如已有账号,则直接登录。 无账号,申请完账号后,进入账号填写相关信息,获取appId。 获取appId:【开发-开发管理-开发设置】 【文件】-【新建】-【项目】: 点击【manifest.json】,将微信小程序的配置信息填

    2024年02月06日
    浏览(50)
  • 前端Uni-app开发微信小程序|微信小程序手机商城

    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库

    2024年02月12日
    浏览(60)
  • uniapp系列-超详细教你在uni-app+vue3里通过web-view组件传递信息打开H5页面写入localstorage并解决兼容性

    web-view 是一个 web 浏览器组件,可以用来承载网页的容器,会自动铺满整个页面(nvue 使用需要手动指定宽高)。 点击这里直达官网文档 点击这里下载我的代码demo 本文最下面还有一些 常见或者奇怪问题解决方案 哦~ 之前开发好的H5页面,不想重新开发,想要直接放进项目用

    2024年02月09日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包