在app中使用 this.$scope.$getappwebview() 获取webview对象实例
通过evaljs可以为这个webview注入一段js,从而去调用网页中的对象
<template>
<view>
<web-view ref="webview" src="http://192.168.1.79:6446/demo.html" @message="handlemessage"></web-view>
</view>
</template>
<script>
var wv;
export default {
onload() {
var currentwebview = this.$scope.$getappwebview(); //获取当前页面的webview对象
settimeout(function() {
wv = currentwebview.children()[0];
}, 300); //如果是页面初始化调用时,需要延时一下
},
methods: {
// 接收网页中发送来的消息
handlemessage(evt) {
console.log('接收到的消息:' + json.stringify(evt));
this.evaljs()
},
evaljs() {
wv.evaljs(`
num+=1; // 网页中的变量
alertaa() // 网页中的事件
`)
}
}
}
</script>网页中调用uniapp的方法需要引入uni 的 sdk
<!-- 微信 js-sdk 如果不需要兼容小程序,则无需引用此 js 文件。 --> <script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script> <!-- uni 的 sdk,必须引用。 --> <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.1.js"></script> <script>
在网页中调用uniapp中的postmessage方法,在 的 message 事件回调 event.detail.data 中接收消息。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>document</title>
</head>
<body>
<button id="test">onpostmessage</button>
<p id="num"></p>
<!-- 微信 js-sdk 如果不需要兼容小程序,则无需引用此 js 文件。 -->
<script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<!-- uni 的 sdk,必须引用。 -->
<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.1.js"></script>
<script>
var num = 1;
document.getelementbyid("num").innertext = num;
document.getelementbyid("test").onclick=()=>{
console.log('clickhandle :>> ', );
uni.getenv(function(res) { // 使用getenv可以判断当前环境
console.log("当前环境:" + json.stringify(res));
});
uni.postmessage({ // 调用uniapp中的postmessage方法
data: {
action: 'onpostmessage'
}
});
}
function alertaa() {
alert("evaljs"+num);
}
</script>
</body>
</html>到此这篇关于uniapp使用 web-view 与网页互相通信的文章就介绍到这了,更多相关uniapp网页互相通信内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论