#鸿蒙通关秘籍#鸿蒙应用侧与前端页面如何进行数据通信?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
数据小战士

鸿蒙应用侧与前端页面之间可以通过创建消息端口(Message Port)进行数据通信。具体步骤如下:

  1. 在应用侧创建两个消息端口,并通过 postMessage() 将一个端口发送到前端页面。

    typescript // xxx.ets import { webview } from '@kit.ArkWeb';

    @Entry @Component struct WebComponent { controller: webview.WebviewController = new webview.WebviewController(); ports: webview.WebMessagePort[] = []; messageToSend: string = 'Message from app to page';

    build() { Column() { Button('Initialize Ports') .onClick(() => { this.ports = this.controller.createWebMessagePorts(); this.controller.postMessage('init_port', [this.ports[0]], '*'); }) Button('Send Message to Page') .onClick(() => { this.ports[1].postMessageEvent(this.messageToSend); }) Web({ src: $rawfile('index.html'), controller: this.controller }) } } }

  2. 在前端页面上,接收从应用侧发送过来的消息端口并进行通信。

    html <!-- index.html --> <!DOCTYPE html> <html> <body> <button type="button" onclick="sendToApp()">Send to App</button> <p id="demo"></p> <script> var h5Port; window.addEventListener('message', function (event) { if (event.data === 'init_port') { h5Port = event.ports[0]; h5Port.onmessage = function (event) { document.getElementById("demo").innerHTML = "Received: " + event.data; } } });

     function sendToApp() {
         if (h5Port) {
             h5Port.postMessage("Message from page to app");
         }
     }
    

    </script> </body> </html>

分享
微博
QQ
微信
回复
2天前
相关问题
PolarDB 如何进行数据通信
2966浏览 • 1回复 待解决
前端页面和原生页面如何进行通信
382浏览 • 1回复 待解决
ArkTSNative如何进行map数据交互
2234浏览 • 1回复 待解决
FA卡片如何进行数据交互
2163浏览 • 1回复 待解决
HarmonyOS 如何进行数据持久化
348浏览 • 1回复 待解决
HarmonyOS如何进行数据文件存储
411浏览 • 1回复 待解决
TaskPool线程中如何进行数据库操作?
241浏览 • 1回复 待解决