处理uni-app打包webview的app返回键处理

<template>
	<view class="content">
		<uni-nav-bar class="nav-bar" fixed :status-bar="true" :left-icon="back" :left-text="leftText" @clickLeft="onLeft" color="#ffffff" background-color="#2F78E4">
			<view class="title">{{ title ? title : '微怀化' }}</view>
		</uni-nav-bar>
		<!-- <view class="status_bar"></view> -->
		<view id="content"></view>
	</view>
</template>

<script>
import uniNavBar from '@/components/uni-nav-bar/uni-nav-bar.vue';
export default {
	components: { uniNavBar },
	onLoad(options) {},
	data() {
		return {
			pageURL: 'https://www.huaihua.gov.cn/',
			webviewStyles: {
				progress: {
					color: '#f00'
				}
			},
			webView: null,
			back: '',
			leftText: '',
			title: '微怀化'
		};
	},
	onReady() {
		// #ifdef APP-PLUS
		var that = this;
		const statusBarHeight = uni.getSystemInfoSync().statusBarHeight;
		const webView = plus.webview.create(
			this.pageURL,
			'content',
			{
				top: statusBarHeight + 44, //放置在titleNView下方。如果还想在webview上方加个地址栏的什么的,可以继续降低TOP值
				//因为设置top之后 webview的高度依然不变会往下移 底部会被遮住  所以设置一下高度
				height: uni.getSystemInfoSync().windowHeight - 44 - statusBarHeight,
				progress: {
					color: '#f00'
				}
			},
			{
				preload: 'preload webview'
			}
		); // 可直接通过以下方法获取preload值
		var currentWebview = this.$scope.$getAppWebview(); //获取当前页面的webview对象
		currentWebview.append(webView); //一定要append到当前的页面里!!!才能跟随当前页面一起做动画,一起关闭
		this.webView = webView;
		this.webView.addEventListener('loaded', this.loading, false);
		this.webView.onloading = this.loading;
		// #endif
	},
	methods: {
		loading(event) {
			console.log(event);
			if (this.webView) { 
				this.webView.canBack(e => {
					console.log('是否可返回:' + e.canBack);
					if (e.canBack) {
						this.back = 'back';
						this.leftText = '返回';
					} else {
						this.back = '';
						this.leftText = '';
					}
				});
				this.onloaded(event);
			}
		},
		onloaded(event) { 
			const title = this.webView.getTitle();
			if(title){ 
				this.title = title;  	 
			}
		},
		onNext() {
			console.log('kalshdfkas');
			this.back = 'back';
			this.leftText = '返回';
		},
		onLeft() {
			if (this.webView) {
				this.webView.canBack(e => { 
					if (e.canBack) {
						this.webView.back();
					}
				});
			}
		}
	}
};
</script>

<style>
.content {
	display: flex;
	flex-direction: column;
	width: 100vw;
	height: 100vh;
}
.title {
	white-space: nowrap;
	text-overflow: ellipsis;
	overflow: hidden; 
	word-break: break-all;
	width: 500upx;
	line-height: 30upx;
	text-align: center;
}
.nav-bar {
	z-index: 9999;
}
.status_bar {
	height: var(--status-bar-height);
	width: 100%;
}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无物勿吾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值