uniapp引入uniapp打包的H5跳转H5以及H5返回app方法

  1. 在app项目添加webview文件夹添加gridWebview.vue文件。代码如下
javascript 复制代码
<template>
	<view>
		<web-view :src="src" @message="getMessage" ></web-view>
	</view>
</template>



<script>
	export default {
		data() {
			return {
				src: '',
			}
		},
		computed: {
			token() {
				return this.$store.state.login.token || ''
			},
			roles() {
				return this.$store.state.login.roles || ''
			},
			userInfo(){
				return this.$store.state.login.userInfo || ''
			}
		},
		onLoad(opt) {
			console.log(opt)
            //拼接所需参数
			this.title = opt.title
			this.src = opt.src
			 + (opt.src.includes('?') ? '&' : '?') 
			 + (this.token.length>0 ? 'token=' + this.token : '') 
			 + (this.userInfo.phone.length>0 ?`&phone=${this.userInfo.phone}` :'' )
			 + (this.userInfo.userId.length>0 ?`&userId=${this.userInfo.userId}` :'' )
			 + (this.userInfo.username.length>0 ?`&username=${this.userInfo.username}` :'' )
			 + (opt.data?`&data=${opt.data}` :'' )
			 + (opt.cityid?`&cityid=${opt.cityid}` :'' )
		},
		onShow() {
			// #ifdef APP-PLUS
            设置webview显示时顶部丢失问题
			var height = 0; //定义动态的高度变量,如高度为定值,可以直接写
			uni.getSystemInfo({
				//成功获取的回调函数,返回值为系统信息
				success: (sysinfo) => {
					height = sysinfo.windowHeight -
						40; //自行修改,自己需要的高度 此处如底部有其他内容,可以直接---(-50)这种,如果不减,页面会下沉,看不到底部导航栏
				},
				complete: () => {}
			});
			var currentWebview = this.$scope.$getAppWebview(); //获取当前web-view
			setTimeout(function() {
				var wv = currentWebview.children()[0];
				wv.setStyle({ //设置web-view距离顶部的距离以及自己的高度,单位为px
					top: 40, //此处是距离顶部的高度,应该是你页面的头部
					height: height, //webview的高度
					scalable: false, //webview的页面是否可以缩放,双指放大缩小,
				})
			}, 500); //如页面初始化调用需要写延迟
			// #endif
		},
		methods: {
			customBack() {
				// 在Webview页面中调用uni.navigateBack()  
				uni.navigateBack();
			},
			getMessage(event) {  //在H5端使用通信返回App端
				console.log(event, '0000000000000000000000000')
				if (event.detail.data[0].action == 'uni-app') {
					uni.navigateBack();
				}
			}

		},

	}
</script>
  1. app跳转H5使用如下方法:
javascript 复制代码
//跳转到对应的webview页面并传入url和其他参数
uni.navigateTo({
						url: item.url.startsWith('http') ? `/pages/webview/gridWebview?title=${item.name}&src=${item.url}` : item.url
					})

3.H5返回app使用如下方法:

app.vue页面需要引入uni.webview.1.5.2.js文件 (目前此方法只能在真机上返回,H5上目前点击无效)

复制代码
<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script> 
javascript 复制代码
onLaunch: function() {
			this.initScript()
			console.log('App Launch')
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		},
		methods: {
			initScript() {
				var script = document.createElement('script');
				script.type = "text/javascript";
				script.async = true;
				script.src = "./static/js/uni.webview.1.5.2.js";
				document.head.appendChild(script);
				console.log(wx, "wx");
			}
		}

在需要返回的页面添加返回方法:

javascript 复制代码
goBack() {
				console.log('0000000', uni, )
				uni.webView.postMessage({
					data: {
						action: 'uni-app', //可自己随意定义,需要与app中接收通信的方法对应
					}
				});
}
相关推荐
ZC跨境爬虫19 分钟前
跟着 MDN 学 JavaScript day_2:JavaScript 初体验
开发语言·前端·javascript·学习·ecmascript
假如让我当三天老蒯33 分钟前
useCallback 详细解释(从原理到用法)(自学用)
前端·react.js
2501_9159090637 分钟前
深入解析Mock.js:功能、应用及实战案例,提升前端开发效率
android·ios·小程序·https·uni-app·iphone·webview
于先生吖1 小时前
前后端分离体育服务项目,场馆计费+线下赛事排行小程序部署开发教程
java·小程序·uni-app
a1117761 小时前
粒子化系统(3D-Particles)THreeJS react
前端·html·jetson
码农君莫笑1 小时前
深入理解 CSS Grid 布局:从入门到实战
前端·css
蜡台1 小时前
Uniapp 实现预览pdf 文件
pdf·uni-app·pdfh5
yingyima1 小时前
Azure Functions 定时触发器配置:Cron vs. TimerTrigger,谁主沉浮?
前端
TeamDev1 小时前
JxBrowser 9.1.1 版本发布啦!
java·前端·chromium·混合应用·jxbrowser·嵌入式浏览器·浏览器控件