Шаблоны примеры qt

Материал из AuroraWiki

Как в WebView передать из web-страницы сообщение внутрь приложения

Проверено в ОС Аврора 4

Добавляем в qml/js файлик framescript.js такого содержания

addEventListener("DOMContentLoaded", function (event) {

   event.originalTarget.addEventListener("framescript:action",

       function (event) {

           sendAsyncMessage("webview:action", event.detail)

   });

});

В qml с WebVieb грузим его и вешаем обработчик      

   WebView {

   id: webView

       objectName: "webView"  

   

   onViewInitialized: {

           webView.loadFrameScript(Qt.resolvedUrl("../js/framescript.js"));

           webView.addMessageListener("webview:action");

       }

       onRecvAsyncMessage: {

           console.log("recv action: " + data.action + " recv msg: " + message)

       }

  }

 

А в html добавляем функцию для отправки

   function sendAsyncMessage(action, data) {

     document.dispatchEvent(new CustomEvent('framescript:action', {

       detail: {

         action: action,

         data: data

       }

     }))

   }

   

Если ее повесить на кнопку, то увидим в коде сообщения