Spec-Zone.ru › Qt 5.13

Возможности Qt WebEngine

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

  • Аудио- и видеокодеки
  • Инструменты разработчика Chromium
  • Сертификаты клиента
  • Перетаскивание и сброс
  • Полный экран
  • HTML5 DRM
  • HTML5 Геолокация
  • Протокол HTTP/2
  • Встроенные диалоговые окна
  • API плагинов Pepper
  • Просмотр файлов PDF
  • Печать в 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 будет читать сертификаты клиента, установленные в системных настройках в macOS и Windows, а на Linux — те, которые установлены в базе данных NSS. Сертификаты можно установить в базу данных NSS с помощью инструмента pk12util.

По умолчанию Qt WebEngine не будет предлагать серверам сертификаты клиента, так как это однозначно идентифицирует пользователя и может нарушать ожидания конфиденциальности.

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

Пользовательские схемы

Qt WebEngine позволяет приложению определять собственные пользовательские схемы URL с индивидуальными политиками безопасности и механизмами передачи.

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

Дополнительную информацию можно найти в разделах QWebEngineUrlScheme и QWebEngineUrlSchemeHandler.

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

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 поддерживает JavaScript API геолокации с 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

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

Просмотр PDF-файлов

Qt WebEngine поддерживает просмотр PDF-документов путем перехода к ним. Эта функция использует API расширений Chromium и плагин визуализатора PDF для отображения PDF-документов. Ее можно протестировать в Простому браузере или Нанобраузере.

Для использования этой функции необходимо включить загрузку плагинов, используя QWebEngineSettings::PluginsEnabled или WebEngineSettings::pluginsEnabled.

Эта функция может быть включена (по умолчанию) или выключена через настройку QWebEngineSettings::PdfViewerEnabled или WebEngineSettings::pdfViewerEnabled.

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

Печать в 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 или path/to/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, и отфильтровка всех сенсорных событий.

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

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

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

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

END_OF_DOCUMENT_MARKER

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

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

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

view-source:qt.io

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

WebRTC

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

Для тестирования этой функции необходимо настроить веб-камеру или микрофон, а затем открыть https://test.webrtc.org/ в Простом браузере или Мини-браузере.

Уведомления в веб

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

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

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

Spec-Zone.ru

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