QML-тип WebEngine
Предоставляет доступ к контексту веб-движка. Подробнее…
| Строка импорта: | import Sailfish.WebEngine 1.0 | 
Свойства
- initialized : bool
 
Сигналы
- contextDestroyed()
 - recvObserve(message, data)
 
Методы
- addComponentManifest(manifestPath)
 - addObserver(aTopic)
 - notifyObservers(topic, value)
 - removeObserver(aTopic)
 
Подробное описание
Компонент 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.