uni-app中拦截webview窗口的URL请求

前言

最近在项目中遇到一个需求,就是通过uni-app的webview嵌入H5页面,并且点击对应的按钮,跳回uni-app中的下单页面,但是在H5页面本身就能进行其他页面的跳转,所以需要阻止H5页面内的跳转(也就是H5自身的跳链操作)


uni-app#webview文档地址:https://uniapp.dcloud.net.cn/component/web-view.html#web-view

具体实现 (IOS、Android均有效)

  • 获取当前webview页面
		//方法一
		const currentWebview = this.$mp.page.$getAppWebview(); 
		//方法二
		var pages = getCurrentPages();  
		var page = pages[pages.length - 1]; 
		var currentWebview = page.$getAppWebview(); 
  • 拦截H5页内的跳转请求
	var wv = currentWebview.children()[0];
	// 拦截所有页面的跳转,可使用参数拦截  .jd.com
	wv.overrideUrlLoading({
	// “reject"  表示满足match属性定义的提交时拦截url跳转并触发callback回调,不满足match属性定义的条件时不拦截url继续加载。
    // “allow”  表示满足match属性定义的条件时不拦截url继续加载,不满足match属性定义的条件时拦截url跳转并触发callback回调;
		mode: 'allow',
		match: '.*jd\.com/.*'
	}, function(e) {
		try {
			// 根据自己的业务需求,处理链接上的参数,进行跳转
			var navURL =`/pages/index/order/order?id=${xxx}`;
			uni.navigateTo({
				url: navURL,
				animationType: 'pop-in'
			})
		} catch (e) {
			console.log(e)
			//TODO handle the exception
		}
		console.log('reject Url', url);
	})
  • 完整代码
	onReady() {
			var that = this;
			console.log('==========onReady  Start========')
			// #ifdef APP-PLUS
			var pages = getCurrentPages();
			var page = pages[pages.length - 1];
			var currentWebview = page.$getAppWebview();
			var url = currentWebview.children()[0].getURL();
			console.log("===URL===", url);

			var wv = currentWebview.children()[0];
			// 拦截所有页面的跳转,可使用参数拦截  .jd.com
			wv.overrideUrlLoading({
				mode: 'allow',
				match: '.*jd\.com/.*'
			}, function(e) {
				try {
					// 根据自己的业务需求,处理链接上的参数,进行跳转
					var navURL =`/pages/index/order/order?id=${xxx}`;
					uni.navigateTo({
						url: navURL,
						animationType: 'pop-in'
					})
				} catch (e) {
					console.log(e)
					//TODO handle the exception
				}
				console.log('reject Url', url);
			})
			// #endif
			console.log('==========onReady  End========')
		},

以上根据自身业务需求进行,可以完成H5页内webview请求拦截。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值