Документация
ОС Аврора 5.1.5
Обмен сообщениями
/*
* SPDX-FileCopyrightText: Copyright 2024 Open Mobile Platform LLC <community@omp.ru>
* SPDX-License-Identifier: Proprietary
*/
/**
* @file
* @brief Содержит пример использования асинхронных сообщений
*/
import QtQuick 2.0
import Sailfish.Silica 1.0
import ru.auroraos.WebView 1.0
Page {
id: page
SilicaFlickable {
anchors.fill: parent
contentHeight: column.height
Column {
id: column
anchors.fill: parent
spacing: Theme.paddingLarge
PageHeader {
title: "Асинхронные сообщения"
}
Button {
property int nativeCounter: 0
anchors.horizontalCenter: parent.horizontalCenter
text: "Отправка async-сообщения из нативного кода"
onClicked: {
nativeCounter++
webView.sendAsyncMessage("msgToBeProcessedInWebpageJS", nativeCounter)
}
}
Label {
id: webCounter
text: "Получено из сети: -"
function updateText(counter) {
text = "Получено из сети: " + counter
}
}
WebItem {
id: webView
width: parent.width
height: page.height - webView.y
url: "/some.webpage.with.handler.functions"
Component.onCompleted: {
webView.addMessageListener("msgToBeProcessedInWebpageJS");
webView.addMessageListener("msgToBeProcessedInQML");
}
}
Connections {
target: webView
onRecvAsyncMessage: {
switch (name) {
case "msgToBeProcessedInWebpageJS":{
webView.runJavaScript(
"receiveMessage(" + data + ")", // произвольная функция, определяемая загруженной веб-страницей
function(arg){ },
function(arg){ })
}
break
case "msgToBeProcessedInQML":{
webCounter.updateText(data);}
break
}
}
}
}
}
}