uniapp 的 html文件中如何使用 uni.XXX 以及 如何向应用发送消息

想使用uni.xxx        

**.html   需要引入:

https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.0.1.52.js

<!-- uni 的 SDK,必须引用。 --> 
<script type="text/javascript" src="//js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.0.1.52.js"></script>

应用的**.vue  通过  web-view 标签引入   **.html 

vue文件传值给 html文件 通过 url地址 ?id=1&name=xx 的方式

那html文件如何传给 vue文件呢?

一开始想到的肯定是全局变量什么的吧,但是肯定是不行的

uniapp提供了一个Api用来解决

可看一下官方文档

uni.postMessage(OBJECT)icon-default.png?t=LA92https://uniapp.dcloud.io/component/web-view?id=postmessage

文档对 uni.postMessage 的介绍:

        网页向应用发送消息,在 <web-view> 的 message 事件回调 event.detail.data 中接收消息。

 使用详情:

**.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>

        <-- 1. 引入 js 文件,为了可以使用 uni.*** -->
        <script type="text/javascript" src="//js.cdn.aliyun.dcloud.net.cn/dev/uni-        app/uni.webview.0.1.52.js"></script>
	</head>
	<body>
		<div onclick="to">123</div>
	</body>
	
	<script>
	   // 2. 例如:要在点击 div 时给 vue 传递字符串 'aaa'
        to(){
            uni.postMessage({
                data:'aaa'
            })
        }
        
	</script>
</html>

**.vue

<template>
    <div>  
        // @message 接收uni.postMessage	回调
        <web-view  @message='message' src="html的路径"></web-view>
    </div>
</template>

<script>
    export default{
        methods:{
            message(e){
                // e.detail.data 就是传递的数据
            }
        }
    }
</script>

### 解决 `uni.postMessage` 方法未定义的问题 当遇到 `uni.postMessage` 方法未定义的错误时,这通常意味着当前环境不支持该 API 或者存在某些配置问题。为了有效解决问题,可以从以下几个方面入手: #### 1. 检查 Uni-app 版本兼容性 确保使用Uni-app 版本支持 `postMessage` 功能。不同版本之间可能存在功能差异或 bug,更新到最新稳定版可以避免许多已知问题[^1]。 #### 2. 验证运行平台 `uni.postMessage` 主要用于小程序环境中,在 H5 页面或其他平台上可能并不适用。确认应用正在合适的小程序环境下执行此操作。 #### 3. 正确引入依赖库 如果项目中涉及多模块开发,则需保证所有必要的依赖项都已被正确加载。对于特定插件或组件的支持情况也要仔细核对文档说明。 #### 4. 使用替代方案 考虑到跨域通信的需求,除了 `uni.postMessage` 外还可以考虑其他方式实现相同目的。例如通过监听消息事件来接收来自子页面的信息: ```javascript window.addEventListener("message", ReceiveMessage); function ReceiveMessage(event){ console.log('接收到的消息:', event.data); } ``` 另外也可以采用 AJAX 请求作为备用手段完成数据交互任务[^2]: ```javascript function ajax(url, successCallback, failCallback) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if (this.readyState == 4) { if (this.status == 200) { successCallback(this.responseText); } else { failCallback(this.status); } } }; xhttp.open("GET", url, true); xhttp.send(); } // 调用示例 ajax("/api/data", function(data){console.log('成功获取的数据:', data)}, function(status){console.error('请求失败的状态码:', status)}); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值