Spec-Zone.ru › Qt 5.11

Особенности Qt WebEngine

Qt WebEngine поддерживает следующие возможности:

  • Аудио и видео кодеки
  • Инструменты разработчика Chromium
  • Перетаскивание
  • Полноэкранный режим
  • HTML5 DRM
  • HTML5 Геолокация
  • Протокол HTTP/2
  • Встроенные диалоговые окна
  • API плагинов Pepper
  • Печать в PDF
  • Процессорные модели
  • Проверка орфографии
  • Взаимодействие с сенсорным экраном
  • Просмотр исходного кода
  • WebRTC

Аудио и видео кодеки

Qt WebEngine поддерживает формат MPEG-4 Part 14 (MP4) только в том случае, если были включены необходимые проприетарные аудио и видео кодеки, такие как H.264 и MPEG layer-3 (MP3). Проприетарные кодеки можно включить, передав следующую опцию в инструмент configure при конфигурировании Qt:

-webengine-proprietary-codecs

Например, следующая опция может быть передана при конфигурировании Qt на верхнем уровне:

configure -webengine-proprietary-codecs

Для получения дополнительной информации см. Опции конфигурации Qt.

При использовании qmake для сборки только модуля Qt WebEngine, можно использовать следующую команду (в этом примере исходный код Qt WebEngine находится в C:\qt\qtwebengine):

qmake C:\qt\qtwebengine -- -webengine-proprietary-codecs

Предупреждение: При распространении библиотек проприетарных кодеков необходимо получить лицензии на них.

FFmpeg — кроссплатформенное решение для записи, преобразования и потоковой передачи аудио и видео. Его можно настроить для использования с несколькими кодеками, что создает проблемы с лицензированием при распространении библиотек кодеков. Для некоторых кодеков доступны открытые реализации, такие как OpenH264.

Инструменты разработчика Chromium

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

Для тестирования этой возможности можно запустить приложение Qt WebEngine с командной строкой --remote-debugging-port=[your-port] или установить переменную среды QTWEBENGINE_REMOTE_DEBUGGING, а затем использовать браузер на основе Chromium (например, Simple Browser или Nano Browser) для подключения к http://localhost:[your-port].

Страница инструментов разработчика Chromium также может быть показана внутри приложения. Для этого можно вызвать QWebEnginePage::setInspectedPage() для страницы, которую нужно инспектировать, что подразумевает загрузку инструментов разработчика на страницу this, или QWebEnginePage::setDevToolsPage() для инспектирования страницы this.

Соответствующие свойства QML — WebEngineView.devToolsView и WebEngineView.inspectedView.

Для получения дополнительной информации см. Отладка и профилирование Qt WebEngine.

Перетаскивание

Qt WebEngine поддерживает HTML5 перетаскивание.

Для тестирования этой функции можно открыть демонстрацию HTML5 перетаскивания, например, HTML5 Demos - Перетаскивание, HTML5 Demos - Простое перетаскивание или HTML5 Demos - Перетаскивание с автоматической загрузкой, в Simple Browser или Nano Browser.

Перетаскивание файлов в браузер фактически не является частью HTML5, но оно поддерживается. Это можно проверить, открыв HTML5 Demos - File API.

Поддержка этой функции была добавлена в Qt 5.7.0.

Полноэкранный режим

Qt WebEngine поддерживает просмотр веб-контента в полноэкранном режиме. Для получения дополнительной информации см. WebEngineSettings.fullscreenSupportEnabled, WebEngineView.fullScreenRequested, QWebEngineSettings::FullScreenSupportEnabled и QWebEnginePage::fullScreenRequested.

Для проверки этой функции можно просмотреть видео с YouTube в Video Player или Nano Browser и нажать на значок полноэкранного режима.

Поддержка этой функции была добавлена в Qt 5.6.0.

HTML5 DRM

Qt WebEngine поддерживает просмотр защищенных DRM видео, если плагин Widevine DRM установлен.

Формат видео, наиболее часто используемый службами DRM, H.264, требует проприетарных аудио и видео кодеков. Для получения дополнительной информации об активации кодеков см. Аудио и видео кодеки.

Для проверки этой функции можно воспроизвести видео в Simple Browser или Nano Browser с сайта castLabs, Swank Motion Pictures, Inc. или Shaka Player.

Поддержка этой функции была добавлена в Qt 5.7.0.

HTML5 Геолокация

Qt WebEngine поддерживает API JavaScript Geolocation с Qt Location в качестве бэкенда. Приложению необходимо явно разрешить эту функцию, используя QWebEnginePage::Geolocation или WebEngineView.Feature.

Если Qt Location было скомпилировано до Qt WebEngine, эту функцию можно проверить, используя Карты и разрешив определение текущего местоположения пользователя. Обратите внимание, что в Windows необходимо подключить внешний GPS-приемник к приложению. Для получения дополнительной информации см. Qt Positioning.

Поддержка этой функции была добавлена в Qt 5.5.0.

Протокол HTTP/2

Qt WebEngine поддерживает реализацию Chromium протокола HTTP/2.

Для проверки этой функции можно открыть демонстрацию HTTP/2, например, Akamai HTTP/2 Demo, в Simple Browser или Nano Browser.

Встроенные диалоговые окна

Веб-страница может запрашивать диалоговые окна для следующих функций:

  • Ввод учетных данных пользователя для аутентификации HTTP и прокси
  • Отображение JavaScript alert, confirmation dialog и prompt
  • Выбор цветов
  • Выбор файлов
  • Отображение сообщений об ошибках валидации формы

Qt WebEngine предоставляет стандартные диалоговые окна для этих функций. В приложениях на основе виджетов стандартные диалоговые окна основаны на QDialog, а в приложениях Qt Quick они могут быть основаны на Qt Quick Controls 1 или Qt Quick Controls 2 (с Qt 5.8). Последние используются только на eglfs платформах.

Для явного принудительного выбора диалоговых окон, основанных на Qt Quick Controls 1 или Qt Quick Controls 2, установите переменную среды QTWEBENGINE_DIALOG_SET на QtQuickControls1 или QtQuickControls2.

Диалоговые окна Qt WebEngine Widgets могут быть настраиваемыми путём переопределения функций QWebEnginePage::chooseFiles(), QWebEnginePage::javaScriptAlert(), QWebEnginePage::javaScriptConfirm() и QWebEnginePage::javaScriptPrompt().

С Qt 5.8 диалоговые окна Qt Quick можно настроить, подключившись к сигналам WebEngineView::authenticationDialogRequested(), WebEngineView::javaScriptDialogRequested(), WebEngineView::colorDialogRequested(), WebEngineView::fileDialogRequested() и WebEngineView::formValidationMessageRequested(). Пример см. в WebEngine Qt Quick Custom Dialogs Example.

API плагинов Pepper

Qt WebEngine поддерживает загрузку плагинов Pepper Plugin API (PPAPI), если WebEngineSettings::pluginsEnabled или QWebEngineSettings::PluginsEnabled установлено.

За исключением плагина Adobe Flash Player, плагины необходимо загружать вручную, используя синтаксис командной строки Chromium с аргументом --register-pepper-plugins. Значение аргумента представляет собой список записей, разделенных запятыми, которые содержат путь к файлу и один или несколько MIME-типов, разделенных точками с запятой:

<file-path-plugin1>;<mime-type-plugin1>,<file-path-plugin2>;<mime-type1-plugin2>;<mime-type2-plugin2>

Например:

--register-pepper-plugins="libppapi_example.so;application/x-ppapi-example"

MIME-тип важен, поскольку он определяет, для каких вложений используется плагин.

Поддержка этой функции была добавлена в Qt 5.6.0.

Поддержка плагина Pepper Flash Player

Плагин Pepper Flash Player может загружаться автоматически, если он установлен в одном из следующих расположений, в зависимости от платформы:

  • Windows
    C:\Windows\SysWOW64\Macromed\Flash\pepflashplayer*.dll
    C:\Windows\System32\Macromed\Flash\pepflashplayer*.dll
  • OS X
    /Library/Internet Plug-Ins/PepperFlashPlayer/PepperFlashPlayer.plugin
  • Linux
    /usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so
    /usr/lib/adobe-flashplugin/libpepflashplayer.so
    /usr/lib/PepperFlash/libpepflashplayer.so
    /usr/lib64/chromium/PepperFlash/libpepflashplayer.so

Также можно загрузить плагин Pepper Flash Player из определенного расположения, используя аргументы командной строки:

--ppapi-flash-path=./libpepflashplayer.so

По умолчанию версия Flash установлена в 11.2.999.999. Можно использовать аргумент ppapi-flash-version= для установки другой версии Flash в формате major.minor.build.revision:

--ppapi-flash-version=16.0.0.235

Данную функцию можно протестировать в Простомом браузере или Браузере Nano, если установлен плагин Adobe Flash PPAPI и плагины включены в браузере. Для тестирования функции можно открыть в браузере страницу https://helpx.adobe.com/flash-player.html.

Печать в PDF

Qt WebEngine поддерживает печать веб-страницы в файл PDF. Дополнительную информацию см. в QWebEnginePage::printToPdf() и WebEngineView.printToPdf.

Данную функцию можно протестировать с помощью Html2Pdf.

Поддержка этой функции была добавлена в Qt 5.7.0.

Процессные модели

Qt WebEngine использует несколько процессов ОС для изоляции веб-сайтов друг от друга и от клиентского приложения, что улучшает безопасность и надёжность. Поддерживаются следующие модели процессов, или способы разделения веб-сайтов между процессами ОС:

  • Процесс на экземпляр сайта
  • Процесс на сайт
  • Один процесс

Процесс на экземпляр сайта

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

Две веб-страницы считаются принадлежащими одному и тому же сайту, если они происходят с одного и того же зарегистрированного доменного имени (например, wikipedia.org) и схемы (например, https). Это аналогично политике «один и тот же источник», но поддомены игнорируются. Например, и https://en.wikipedia.org/, и https://de.wikipedia.org/ будут принадлежать одному сайту.

Экземпляр сайта — это набор веб-страниц, принадлежащих одному сайту. Когда приложение явно загружает URL в Qt WebEngine (например, через QWebEnginePage::setUrl), для страницы создаётся новый экземпляр сайта. Однако, когда пользователь нажимает ссылки на том же сайте на странице, существующий экземпляр сайта просто расширяется новыми страницами.

Например, в примере Простого браузера, когда пользователь открывает две вкладки и явно вводит https://en.wikipedia.org/ в адресные строки, обе вкладки будут иметь свои отдельные процессы ОС (поскольку явное введение URL создаёт новый экземпляр сайта). Однако, когда пользователь затем щелкает по ссылкам на том же сайте, чтобы открыть новые вкладки, эти новые вкладки будут использовать один и тот же процесс ОС (потому что взаимодействие пользователя расширяет существующий экземпляр сайта).

Процесс на сайт

Страницы с разных сайтов помещаются в отдельные процессы. В отличие от модели «Процесс на экземпляр сайта», все посещения одного и того же сайта будут использовать один процесс ОС.

Преимущество этой модели — снижение потребления памяти, поскольку больше веб-страниц будут использовать общие процессы. Недостатки включают снижение безопасности, надёжности и отзывчивости.

Чтобы включить эту модель, используйте аргумент командной строки --process-per-site. См. Использование аргументов командной строки.

Один процесс

Только для отладки режим одного процесса можно включить, используя аргумент командной строки --single-process. См. Использование аргументов командной строки и Отладка и профилирование Qt WebEngine.

Проверка орфографии

Qt WebEngine поддерживает интеграцию проверки орфографии в HTML-формы, чтобы пользователи могли отправлять проверенные сообщения. Когда пользователь нажимает на подчеркнутое неверное слово, контекстное меню по умолчанию отображает до четырёх предложений. Выбор одного из них заменит неправильное слово.

Для проверки орфографии требуется наличие словарей. Поддерживаются словари из проекта Hunspell, но их необходимо скомпилировать в специальный двоичный формат. Словарь Hunspell состоит из двух файлов:

  • Файл .dic, содержащий слова для языка
  • Файл .aff, определяющий значение специальных флагов в словаре

Эти два файла можно преобразовать в формат bdic с помощью инструмента qwebengine_convert_dict, поставляемого вместе с Qt. При инициализации проверки орфографии Qt WebEngine попытается загрузить словари bdict и проверить их на предмет соответствия.

Если QTWEBENGINE_DICTIONARIES_PATH установлено, проверка орфографии использует словари в указанном каталоге, не проверяя другие места. В противном случае используется каталог qtwebengine_dictionaries, относительный к исполняемому файлу, если он существует. Если он не существует, он будет искать в QT_INSTALL_PREFIX/qtwebengine_dictionaries.

В macOS, в зависимости от конфигурации Qt WebEngine во время сборки, существуют два варианта нахождения данных проверки орфографии:

  • Словари Hunspell (по умолчанию) — используются словари .bdic, как и на других платформах
  • Встроенные словари — используются API проверки орфографии macOS (результаты зависят от установленных словарей ОС)

Таким образом, в случае использования Hunspell Qt WebEngine будет искать в подкаталоге qtwebengine_dictionaries, расположенном внутри пакета приложения Resources, а также в каталоге Resources внутри пакета Qt.

Подводя итог, в случае использования Hunspell рассматриваются следующие пути:

  • QTWEBENGINE_DICTIONARIES_PATH, если установлено
  • QCoreApplication::applicationDirPath()/qtwebengine_dictionaries или QCoreApplication::applicationDirPath()/../Contents/Resources/qtwebengine_dictionaries (в macOS)
  • [QLibraryInfo::DataPath]/qtwebengine_dictionaries или путь/к/QtWebEngineCore.framework/Resources/qtwebengine_dictionaries (пакет Qt в macOS)

Проверка орфографии отключена по умолчанию и может быть включена для каждого профиля с помощью метода QWebEngineProfile::setSpellCheckEnabled() в приложениях на основе виджетов и свойства WebEngineProfile.spellCheckEnabled в приложениях Qt Quick.

Язык, используемый для проверки орфографии, определяется для каждого профиля и может быть задан с помощью метода QWebEngineProfile::setSpellCheckLanguages() или свойства WebEngineProfile.spellCheckLanguages.

Данную функцию можно протестировать, собрав и запустив пример Проверки орфографии.

Поддержка этой функции была добавлена в Qt 5.8.0.

Взаимодействие с сенсорным экраном

Qt WebEngine поддерживает сенсорные устройства для навигации и взаимодействия с веб-страницами.

Приложения могут запретить использование событий сенсорного ввода следующими способами:

  • Передача флага --touch-events=disabled в командной строке отключит поддержку событий сенсорного ввода в JavaScript API (т.е., ontouchstart и связанные обработчики не будут присутствовать в объекте document.window). Сообщения о событиях сенсорного ввода всё ещё будут передаваться веб-страницам.
  • Установка объекта фильтра событий с помощью QObject::installEventFilter на объекте-прокси фокуса WebEngine view и фильтрация всех событий сенсорного ввода.

Просмотр исходного кода

Qt WebEngine поддерживает просмотр исходного HTML-кода веб-страницы.

Эту функцию можно использовать из пользовательских меню или назначить пользовательским событиям. Дополнительную информацию см. в WebEngineView::WebAction и QWebEnginePage::WebAction.

Данную функцию можно протестировать, открыв веб-страницу в Простомом браузере или Браузере Nano, а затем выбрав Page Source в контекстном меню. Элемент контекстного меню Page Source открывает просмотр исходного кода в новой вкладке.

Для открытия просмотра исходного кода в текущей вкладке также поддерживаются URL с схемой URI view-source. Например, вы можете ввести следующий URL в адресную строку, чтобы просмотреть исходный код HTML-страницы qt.io:

view-source:https://www.qt.io/

Автозаполнение неполных URL с схемой URI view-source делает использование этой функции более удобным. Например, следующий неполный URL также загружает просмотр исходного кода веб-страницы qt.io:

view-source:qt.io

Поддержка этой функции была добавлена в Qt 5.8.0.

WebRTC

WebRTC предоставляет браузерам возможности реального времени (RTC) через простые API. Дополнительную информацию см. в WebEngineView.Feature и QWebEnginePage::Feature.

Данную функцию можно протестировать, настроив веб-камеру или микрофон, а затем открыв https://test.webrtc.org/ в Простомом браузере или Браузере Nano.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qtwebengine-features.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API