当前位置: 代码网 > it编程>编程语言>Javascript > uniapp如何使用 web-view 与网页互相通信

uniapp如何使用 web-view 与网页互相通信

2024年09月07日 Javascript 我要评论
在app中使用 this.$scope.$getappwebview() 获取webview对象实例通过evaljs可以为这个webview注入一段js,从而去调用网页中的对象<template

在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网页互相通信内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com