uniapp webview web-view组件监听网页变化 url变化 与网页通讯

uniapp webview web-view组件监听网页变化 url变化 与网页通讯

需求是在app页面内嵌套自己的h5 或者别人的h5 切换页面时候获取到网页的变化 url的变动

第一种方法就是使用 html5+的方法

javascript 复制代码
//html部分
<web-view :src="webviewPath" class="webview" height="100%" :webview-styles="{width:'100%',height:'100%'}"
			id="webview" ></web-view>
//js部分	
<script>
export default {
onReady() {
// 获取当前Webview窗口对象
			const ws = plus.webview.currentWebview();
			var currentWebview = this.$scope.$getAppWebview()
			setTimeout(() => {
			let wv = currentWebview.children()[0];
			_this.ws.loadURL(_this.webviewPath) //加载h5链接
			// 监听窗口触屏事件
				_this.ws.addEventListener('touchstart', function(e) {
					setTimeout(() => {
						let orderUrl = _this.ws.getURL() //页面链接
						const wsTitle = _this.ws.getTitle() //页面标题
						console.log(_this.ws.getTitle())
						console.log(orderUrl)
						console.log('touchstart');
					}, 100)

				}, false);
				_this.ws.onloaded = () => {
					let orderUrl = _this.ws.getURL()
					console.log('onloaded事件加载完成', orderUrl)
				};
			},1000)//如果是页面初始化调用时,需要延时一下 
}
}
</script>

第二种方法就是使用 html5+的方法 和uniapp的 uni.webview.js

使用uni.webview.js 就可以实现h5和app通讯了,想要h5的任何数据都用通过 uni.webView.postMessage来传递给

app

javascript 复制代码
//html部分
<web-view :src="webviewPath" class="webview" height="100%" :webview-styles="{width:'100%',height:'100%'}"
			id="webview" @message="receiveMsg"></web-view>
	methods: {
			wsEvalJs() {
				// 在webview加载完成后,注入JavaScript代码
				this.ws.evalJSSync(`
				       var script = document.createElement('script');
				       script.src = 'https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js';
				       document.body.appendChild(script);
							 document.addEventListener("UniAppJSBridgeReady", function() {
							   console.log("初始化uniapp的API成功");
								 uni.webView.postMessage({ data: { type: "href",href:window.location.href,msg:"获取页面url" } });
							 });
				      `);
			},
				//接收wenview h5的消息
			receiveMsg(option){
				console.log('接收到的消息参数'+JSON.stringify(option))
				
			},
			}
相关推荐
C澒17 小时前
前端技术核心领域与实践方向
前端·系统架构
写代码的【黑咖啡】17 小时前
Python 中的自然语言处理利器:NLTK
前端·javascript·easyui
Swift社区18 小时前
Nginx 反向代理配置 React 前端与 Python 后端
前端·nginx·react.js
可问春风_ren18 小时前
Vue3 入门详解:从基础到实战
开发语言·前端·javascript·vue.js·前端框架·ecmascript·edge浏览器
一起养小猫18 小时前
Flutter for OpenHarmony 实战:从零开发一款五子棋游戏
android·前端·javascript·flutter·游戏·harmonyos
晚霞的不甘18 小时前
Flutter for OpenHarmony全面升级「今日运势」 应用的视觉与交互革新
前端·学习·flutter·前端框架·交互
学嵌入式的小杨同学18 小时前
【Linux 封神之路】文件操作 + 时间编程实战:从缓冲区到时间格式化全解析
linux·c语言·开发语言·前端·数据库·算法·ux
RFCEO18 小时前
学习前端编程:精准选中 HTML 元素的技巧与方法
前端·学习·css类选择器·兄弟元素选中·父子选中·关系选中·选择器选中
想睡好18 小时前
ref和reactive
前端·javascript·vue.js
霁月的小屋18 小时前
React 闭包陷阱深度解析
前端·javascript·react.js