Документация
ОС Аврора 5.0.1

QML-тип WebEngine

Предоставляет доступ к контексту веб-движка. Подробнее…

Строка импорта: import Sailfish.WebEngine 1.0

Свойства

Сигналы

Методы

Подробное описание

Компонент WebEngine — это синглтон, который обеспечивает доступ к контексту веб-движка.

QML-тип WebEngine предоставляется через импорт QML-модуля Sailfish.WebEngine.

Пример использования:

 import QtQuick 2.0
 import Sailfish.Silica 1.0
 import Sailfish.WebView 1.0
 import Sailfish.WebEngine 1.0

 ApplicationWindow {
     id: root
     initialPage: Component {
         WebViewPage {
             WebView {
                 anchors.fill: parent
                 url: "https://auroraos.ru/"
             }

             Component.onCompleted: {
                 WebEngine.addObserver("clipboard:setdata")
                 WebEngine.onRecvObserve.connect(function(message, data) {
                     if (message == "clipboard:setdata" && !data.private) {
                         console.log("Clipboard contents: " + data.data);
                     }
                 })
             }
         }
     }
 }

См. также WebView.

Описание свойств

[read-only] initialized : bool

Возвращает true, если компонент был инициализирован, иначе false.

Описание сигналов

contextDestroyed()

Сигнал испускается после того, как внедрение было остановлено, и контекст готов к удалению.

Сигнал испускается, когда встраивание было остановлено, непосредственно перед удалением WebEngine и выходом из программы.

recvObserve(message, data)

Сигнал испускается, когда получено уведомление по наблюдаемой теме.

После того, как приложение зарегистрировало интерес к определённой теме, вызвав addObserver, оно может затем подключиться к данному сигналу, чтобы получать уведомления о любом компоненте, отправляющем уведомление по теме.

Параметр message будет соответствующей темой, параметр data будет содержать данные, отправленные адресантом в формате JSON. Точная структура JSON остаётся на усмотрение адресанта.

См. также addObserver и notifyObservers.

Описание методов

addComponentManifest(manifestPath)

Регистрирует компоненты JavaScript Chrome для загрузки в WebEngine.

WebEngine имеет три основных слоя. Верхний слой представлен в виде QML-компонентов с интерфейсом для разработчиков. Нижний слой — нативный движок рендеринга Gecko.

Между ними находится слой JavaScript Chrome, который может взаимодействовать с любым из двух других, используя шаблон наблюдателя/уведомления. Эти компоненты JavaScript считаются привилегированным кодом и запускаются с помощью системного принципала.

Вызов данного метода позволяет добавлять и выполнять новые компоненты JavaScript как часть промежуточного слоя.

manifestPath должен быть абсолютным путём, указывающим на файл манифеста. Файл манифеста должен содержать ссылки на компоненты в том же каталоге, как показано в следующем примере. Пример состоит из трёх файлов: файла пользовательского интерфейса QML, который вызывает addComponentManifest, файла манифеста и компонента, на который есть ссылка в манифесте.

Файл WebEngine page.qml вызывает addComponentManifest.

 import QtQuick 2.1
 import Sailfish.Silica 1.0
 import Sailfish.Browser 1.0
 import Sailfish.WebEngine 1.0

 ApplicationWindow {
     id: root
     initialPage: Component {
         WebViewPage {
             WebView {
                 anchors.fill: parent
                 url: "https://auroraos.ru/"
                 onLinkClicked: {
                     WebEngine.notifyObservers("exampleTopic", url)
                 }
             }

             Component.onCompleted: {
                 WebEngine.addComponentManifest("/path/file.manifest")
             }
         }
     }
 }

Файл манифеста по пути /path/file.manifest

 component {20227a22-1722-4753-b8f6-c842b401b4c3} ExampleComponent.js
 contract @mozilla.org/embedlite-example-component;1 {20227a22-1722-4753-b8f6-c842b401b4c3}
 category app-startup ExampleComponent service,@mozilla.org/embedlite-example-component;1

Компонент JavaScript Chrome указывается в манифесте и хранится по пути /path/ExampleComponent.js

 const Ci = Components.interfaces;
 const Cu = Components.utils;

 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");

 XPCOMUtils.defineLazyServiceGetter(Services, "embedlite",
                                     "@mozilla.org/embedlite-app-service;1",
                                     "nsIEmbedAppService");

 Services.scriptloader.loadSubScript("chrome://embedlite/content/Logger.js");

 function ExampleComponent() {
   Logger.debug("JSComp: ExampleComponent.js loaded");
 }

 ExampleComponent.prototype = {
   classID: Components.ID("{20227a22-1722-4753-b8f6-c842b401b4c3}"),

   QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),

   observe: function(aSubject, aTopic, aData) {
     switch (aTopic) {
     case "app-startup":
       Services.obs.addObserver(this, "exampleTopic", false);
       break;
     case "exampleTopic":
       Logger.debug("ExampleComponent: exapleTopic data: " + aData);
       break;
     }
   },
 };

 this.NSGetFactory = XPCOMUtils.generateNSGetFactory([ExampleComponent]);

addObserver(aTopic)

Регистрирует WebEngine для получения уведомлений по теме.

Движок Gecko и компоненты EmbedLite используют уведомления для передачи данных и информации о событиях другим компонентам. Метод addObserver позволяет WebEngine зарегистрироваться как интересующемуся конкретной aTopic, чтобы он начал получать уведомления.

Когда WebEngine получает уведомление о зарегистрированной aTopic, он отправляет сигнал recvObserve.

Документация Mozilla nsIObserver предоставляет подробную информацию о базовых процессах.

Существует также неполный список тем для уведомлений наблюдателей, на которые можно подписаться.

См. также removeObserver, recvObserve и notifyObservers.

notifyObservers(topic, value)

Отправляет широковещательное уведомление, которое могут получить другие компоненты.

Отправляет уведомление, которое будет получено любым компонентом, зарегистрировавшим наблюдателя для topic.

Дополнительные данные можно отправить вместе с уведомлением, используя параметр value в формате JSON.

См. также addObserver и recvObserve.

removeObserver(aTopic)

Отменяет регистрацию WebEngine для получения уведомлений по теме.

Если компонент, который ранее зарегистрировал интерес к получению уведомлений о aTopic, вызвав addObserver, больше не заинтересован в их получении, он может вызвать removeObserver для отмены.

Вызов removeObserver не гарантирует, что больше не будут получены уведомления по этой теме, поскольку другие компоненты могли зарегистрировать интерес с помощью WebEngine. WebEngine перестанет посылать сигналы по теме только после отмены всех подписок.

См. также addObserver, recvObserve и notifyObservers.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.