Qt WebEngine 特性
Qt WebEngine 支持以下特性
- 音频和视频编解码器
- WebEngineDriver
- Chromium 开发者工具
- 客户端证书
- 自定义方案
- 拖放
- 网页图标
- 全屏
- 硬件加速
- HTML5 DRM
- HTML5 地理位置服务
- HTML5 WebSocket
- HTTP/2 协议
- 本地存储
- 本地对话框
- Pepper 插件 API
- PDF 文件查看
- 页面生命周期 API
- 打印到 PDF
- 进程模型
- 拼写检查器
- 触摸操作
- 查看源代码
- 网页通知
- WebGL
- WebRTC
音频和视频编解码器
仅当启用所需的专有音频和视频编解码器(如 H.264 和 MPEG 层 3 (MP3))时,Qt WebEngine 才支持 MPEG-4 Part 14 (MP4) 文件格式。可以通过在配置 Qt 时通过 configure
工具传递以下选项来启用专有编解码器
-webengine-proprietary-codecs
例如,在配置 Qt 以在顶级构建它时可以传递以下选项
configure -webengine-proprietary-codecs
有关更多信息,请参阅 Qt 配置选项.
当使用 cmake 构建 Qt WebEngine 模块时,可以使用以下命令进行配置和构建(在此示例中,Qt WebEngine 源代码位于 C:\qt\qtwebengine
)
qt-configure-module C:\qt\qtwebengine -webengine-proprietary-codecs cmake --build . --parallel
警告:在分发专有编解码器库时,必须为其获取许可证。
FFmpeg 是一种跨平台的音频和视频录制、转换和流解决方案。它可以配置使用多个编解码器,这将在与编解码器库一起分发时产生许可问题。对于某些编解码器,存在开源实现,如 OpenH264。
WebEngineDriver
使用 WebEngineDriver,您可以为跨浏览器的网站自动化测试。WebEngineDriver 基于 ChromeDriver,可以以相同的方式使用。有关 ChromeDriver 及其使用的更多信息,请访问 ChromeDriver 用户网站。
WebEngineDriver 与 ChromeDriver 相比略有修改,能够连接到基于 Qt WebEngine 的浏览器。它与 Qt WebEngine 示例浏览器兼容,例如 Simple Browser 或 Nano Browser。
浏览器自动化通过 WebDriver 客户端脚本化,如 Selenium WebDriver。例如,可以使用 Selenium WebDriver 的 Python 子程序与本示例中的 WebEngineDriver 一起使用
from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service(executable_path='QTDIR/libexec/webenginedriver') options = webdriver.ChromeOptions() options.binary_location = 'path/to/browser_binary' driver = webdriver.Chrome(service=service, options=options) driver.get("http://www.google.com/") driver.quit()
在此示例中,
executable_path
应设置为 WebEngineDriver 的二进制路径QTDIR
是安装 Qt 的目录options.binary_location
需要设置为浏览器的二进制路径
注意:在 Windows 上:executable_path='QTDIR/bin/webenginedriver.exe'
在执行脚本之前,必须设置环境变量 QTWEBENGINE_REMOTE_DEBUGGING
。其值是一个端口号,该端口号由浏览器和 WebEngineDriver 共同使用来相互通信。
export QTWEBENGINE_REMOTE_DEBUGGING=12345
执行脚本后,脚本会打开指定的网页浏览器并加载 Google 网站。
如果 WebEngineDriver 是在设置了远程调试端口号的情况下启动的,那么也可以将其附加到已经运行的浏览器中。options.debugger_address
必须在脚本中设置远程调试地址
options.debugger_address = 'localhost:12345'
在这种情况下,不应设置 options.binary_location
,因为浏览器已经运行。如果设置了 options.debugger_address
,则 WebEngineDriver 不会使用环境变量 QTWEBENGINE_REMOTE_DEBUGGING
。
注意:WebEngineDriver 必须使用与 Qt WebEngine 相同版本的 Chromium 进行构建。
Chromium DevTools
Chromium DevTools 提供了检查和调试任何网页内容布局和性能问题的能力。
可以通过以命令行选项 --remote-debugging-port=[your-port]
启动 Qt WebEngine 应用程序或设置环境变量 QTWEBENGINE_REMOTE_DEBUGGING
并使用基于 Chromium 的浏览器(如 Simple Browser 或 Nano Browser)连接到 http://localhost:[your-port]
来测试此功能。
--webEngineArgs --remote-debugging-port=5000
为了避免在远程调试期间出现 WebSocket 错误,请添加一个额外的命令行参数 --remote-allow-origins=<origin>[,<origin>, ...]
,其中 <origin>
表示请求的源。使用 --remote-allow-origins=*
来允许来自所有源连接。如果没有指定,Qt WebEngine 将在启用远程调试时添加 --remote-allow-origins=*
到命令行参数中,从而允许来自所有源的请求。
Chromium DevTools 页面也可以在应用程序内部显示。要设置此配置,可以调用 QWebEnginePage::setInspectedPage() 到要检查的页面,这会隐式地将 DevTools 加载到 this
页面,或者调用 QWebEnginePage::setDevToolsPage() 以允许对 this
页面进行检查。
相应的 QML 属性是 WebEngineView.devToolsView 和 WebEngineView.inspectedView。
有关更多信息,请参阅 Qt WebEngine 调试和性能分析。
客户端证书
一些网页服务器,特别是许多内网网站,要求客户端使用证书进行自身认证,称为 客户端证书。Qt WebEngine 将读取 macOS 和 Windows 系统设置中安装的客户端证书,在 Linux 上是安装在 NSS 数据库中的证书。可以使用 pk12util
工具将证书安装到 NSS 数据库中。
默认情况下,Qt WebEngine 不会向服务器提供任何客户端证书,因为这样做会唯一标识用户,可能会违反隐私预期。
要激活客户端证书支持,应用程序需要监听QWebEnginePage::selectClientCertificate或WebEngineView.selectClientCertificate信号,并选择所提供证书中的一个。对于可以导航到不受信任网站的应用程序,建议在唯一地将用户识别到远程服务器之前,始终给用户提供选择。
除了系统设置中存储的客户端证书外,Qt WebEngine还提供内存存储。可以通过QWebEngineProfile::clientCertificateStore()方法获取QWebEngineClientCertificateStore实例。应用程序可以使用该类通过QWebEngineClientCertificateStore::add()调用添加新的证书。注意,在selectClientCertificate
调用期间,Qt WebEngine列出了系统和内存中存储的客户端证书。
有关更多实现细节,请参阅客户端证书示例。
自定义方案
Qt WebEngine使应用程序能够定义其自己的自定义URL方案,并具有专门的策略和安全传输机制。
自定义方案可以用于实现具有所有常规Web安全策略的替代网络协议、显示用户界面组件或调试信息的特权内部方案、具有额外限制的沙箱方案等。
有关更多信息,请参阅QWebEngineUrlScheme和QWebEngineUrlSchemeHandler。
拖放
Qt WebEngine支持HTML5拖放。
此特性可以通过在Simple Browser或Nano Browser中打开HTML5拖放演示来测试,例如HTML5 Demos - Drag and Drop、HTML5 Demos - Simple Drag and Drop或HTML5 Demos - Drag and Drop, Automatic Upload。
将文件拖入浏览器实际上不是HTML5的一部分,但它是受支持的。可以通过打开HTML5 Demos - File API进行测试。
此功能在Qt 5.7.0中添加支持。
网站图标
Qt WebEngine支持网站URL图标favicon。每个图标存储在每个QWebEngineProfile的内部数据库中,可以通过QWebEnginePage::icon()调用或当前加载内容的WebEngineView.icon属性来访问。
此外,Qt WebEngine还提供了用于访问内部配置文件数据库中已存储图标的API。
注意:图标数据库对离线配置文件不可用。
QML网站图标处理
为了访问图标,注册了QQuickImageProvider。通过特殊URL可以访问此提供者,其中方案为"image:",主机为"favicon"。
Image { source: "image://favicon/url" }
url
可以是favicon的URL
Image { source: "image://favicon/https://www.qt.io/hubfs/2016_Qt_Logo/qt_logo_green_rgb_16x16.png" }
url
也可以是一个页面URL,用于访问其图标
Image { source: "image://favicon/https://www.qt.io/" }
如果可用的图标超过一个,可以指定Image::sourceSize属性来选择具有所需大小的图标。如果Image::sourceSize未指定或为0,则选择最大可用的图标。
图像提供商在现有的WebEngineView实例中查找请求的图标。首先,它尝试匹配当前显示的图标。如果没有找到匹配项,它将从数据库请求图标。每个配置文件都有自己的图标数据库,并且它存储在持久存储中,因此即使无需网络连接,也可以访问已存储的图标。图标必须预先加载才能存储在数据库中。
C++ 快速标记处理
用户可以使用QWebEngineProfile中的requestIconForPageURL()或requestIconForIconURL()调用,从先前加载的内容请求每个QWebEngineProfile的图标。请注意,配置文件的数据库存储在持久存储中,可以在无需网络连接的情况下访问。
全屏
Qt WebEngine 支持以全屏模式查看网络内容。更多相关信息,请参阅 WebEngineSettings.fullscreenSupportEnabled、WebEngineView.fullScreenRequested、QWebEngineSettings::FullScreenSupportEnabled和QWebEnginePage::fullScreenRequested。
可以通过在视频播放器或Nano 浏览器中播放 YouTube 视频并点击全屏图标进入全屏模式来测试此功能。
此功能是在 Qt 5.6.0 中添加的。
硬件加速
QtWebEngine试图使用硬件加速来渲染内容。它使用OpenGL
或OpenGLES
API在 GPU 上执行渲染调用。作为备选方案,在硬件不满足所需的 OpenGL 功能集时使用软件渲染。用户可以通过加载chrome://gpu
内部页面来检查当前硬件加速状态。此外,可以通过使用QTWEBENGINE_CHROMIUM_FLAGS
并使用disable-gpu
开关明确禁用加速。例如,在 Linux 上
export QTWEBENGINE_CHROMIUM_FLAGS=--disable-gpu
HTML5 数字版权管理
如果已安装了Widevine CDM插件,Qt WebEngine 支持查看受数字版权管理保护的视频。CDM 插件是用于显示数字版权管理内容的基于 Flash 的插件的替代品。它仅以二进制格式提供,因此可以隐藏数字版权管理解密实现的细节。可以从第三方或从 Google Chrome 安装中获取它。
Qt WebEngine 在启动时在已知位置查找Widevine CDM插件,如默认 Google Chrome 安装目录或 Linux 发行版的特定路径。然而,也可以通过QTWEBENGINE_CHROMIUM_FLAGS
使用widevine-path
传递插件位置。
在 Windows 上
set QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="C:/some path/widevinecdm.dll"
在 Linux 上
export QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="/some path/libwidevinecdm.so"
在 macOS 上
export QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="/some path/libwidevinecdm.dylib"
由数字版权管理服务最常使用的视频格式 H.264 需要专有的音频和视频编解码器。有关启用编解码器的更多信息,请参阅音频和视频编解码器。
可以通过在简易浏览器或纳米浏览器中播放视频,或在castLabs、Swank Motion Pictures, Inc.或Bitmovin Player中进行测试。
此功能在Qt 5.7.0中添加支持。
HTML5 地理位置定位
Qt WebEngine 支持使用 Qt 定位 作为后端支持 JavaScript 地理定位 API。HTML5 地理定位默认禁用。要显式允许它,应用程序需要监听 QWebEnginePage::featurePermissionRequested。可以使用 QWebEnginePage::Geolocation 和一个 QWebEnginePage::setFeaturePermission() 调用或使用 WebEngineView::Feature 与一个 WebEngineView.grantFeaturePermission() 调用来授权所需的权限。
如果 Qt WebEngine 使用 Qt 定位支持构建,则可以测试使用 地图 并允许它找到用户当前位置的功能。
注意:在 Windows 11 上,请启用设置以授予地图示例对 Windows 位置服务的访问权限。在“设置”应用中,在 隐私与安全 > 位置 下,启用 位置服务、让应用访问您的位置 和 让桌面应用访问您的位置。
请参阅 Qt 定位 了解后台设置是 GPS 还是基于 IP 的定位。
Qt 5.5.0 添加了对该功能的支持。
HTML5 WebSocket
Qt WebEngine 支持使用 ws://
或 wss://
协议与 WebSocket 服务器通信的 WebSocket JavaScript API。此外,Qt WebChannel 和 Qt WebSockets 的集成使得 JavaScript 和应用程序的本地表层之间可以进行通信。
Qt WebChannel 模块提供了一个聊天服务器的实例,以及其基于 Web 的聊天客户端。客户端在 Qt WebEngine 的示例浏览器中(如 简易浏览器 或 纳米浏览器)中即可直接使用。
HTTP/2 协议
Qt WebEngine 支持 Chromium 对 HTTP/2 协议的实现。
可以在 简易浏览器 或 纳米浏览器 中打开 HTTP/2 演示,如 Akamai HTTP/2 演示,来测试该功能。
本地存储
Qt WebEngine 支持在无过期日期的 Local Storage
中保存键值对。这是 Web Storage API 的一部分,用户可以使用 Window.localStorage
JavaScript 属性,通过给定域名访问 Storage
对象。存储的数据即使在页面或浏览器应用程序关闭后也会持续存在。
请注意,Local
Storage 可以通过 QWebEngineSettings::LocalStorageEnabled 设置禁用。此外,可以通过 QWebEngineProfile::setPersistentStoragePath 调用来调整存储路径。
QWebEngineProfile profile("MyProfile"); profile.settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, isEnabled); profile.setPersistentStoragePath("/path/to/storage");
Qt WebEngine还提供了一种通过访问应用程序面板并展开本地存储菜单来使用Qt WebEngine开发者工具 (Qt WebEngine开发者工具) 来轻松调查本地存储
内容的方法。
原生对话框
网页可能请求执行以下功能的对话框
- 输入HTTP和代理认证的用户凭据
- 显示JavaScript警告、确认对话框和提示
- 选择颜色
- 选择文件
- 显示表单验证消息
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()信号来自定义。例如,
Pepper插件API
如果设置了WebEngineSettings::pluginsEnabled或QWebEngineSettings::PluginsEnabled,Qt WebEngine支持加载Pepper插件API (PPAPI)插件。
必须使用包含--register-pepper-plugins
参数的Chromium命令行语法手动加载插件。参数值是一个条目列表,由逗号分隔,包含文件路径和一个或多个由分号分隔的MIME类型。
<file-path-plugin1>;<mime-type-plugin1>,<file-path-plugin2>;<mime-type1-plugin2>;<mime-type2-plugin2>
例如
--webEngineArgs --register-pepper-plugins="libppapi_example.so;application/x-ppapi-example"
由于它确定替换哪个插件,因此MIME类型非常重要。
此功能是在 Qt 5.6.0 中添加的。
PDF文件查看
Qt WebEngine支持通过导航到它们来查看PDF文档。此功能使用Chromium扩展API和PDF查看器插件来显示PDF文档。它可以在简单浏览器或Nano浏览器中测试。
要使用此功能,需要使用QWebEngineSettings::PluginsEnabled或WebEngineSettings::pluginsEnabled启用加载插件。
可以通过QWebEngineSettings::PdfViewerEnabled或WebEngineSettings::pdfViewerEnabled设置来开启(默认)或关闭此功能。
该功能支持添加到Qt 5.13.0。
页面生命周期API
Qt WebEngine支持页面生命周期API规范,这是对HTML标准的扩展性工作,允许用户代理通过冻结或丢弃后台页面来减少其资源消耗。此功能在Widgets和QML API中都已公开。
有关QML API的示例,请参阅WebEngine生命周期示例。
此功能支持添加到 Qt 5.14.0。
生命周期状态的概述
每个WebEngineView项目(或QWebEnginePage对象)可以处于以下三种生命周期状态之一:活跃、冻结或丢弃。这些状态,类似于CPU的睡眠状态,控制了网页视图的资源使用。
活跃状态是网页视图的正常、无限制状态。所有可见的网页视图始终处于活跃状态,以及尚未完成加载的所有网页视图。只有不可见的、空闲的网页视图才能转换为其他生命周期状态。
冻结状态是一个CPU使用量较低的状态。在此状态下,大多数HTML任务源被暂停(冻结),因此大多数DOM事件处理和JavaScript执行也将被暂停。只有当网页视图不可见时才能将其冻结,因为在该状态下无法进行渲染。
丢弃状态是一个极端的资源节省状态。在此状态下,网页视图的浏览上下文将被丢弃,相应的渲染器子进程将被关闭。在此状态下,CPU和内存的使用几乎减少到零。从该状态退出时,网页将自动重新加载。进入和退出丢弃状态的过程类似于序列化网页视图的浏览历史并销毁视图,然后创建一个新的视图并恢复其历史记录。
另请参阅WebEngineView::LifecycleState。Widgets API中的等效物是QWebEnginePage::LifecycleState。
lifecycleState
和recommendedState
属性
WebEngineView类型的lifecycleState
属性是一个可读写的属性,用于控制网页视图的当前生命周期状态。此属性旨在将尽可能少的限制应用于可以转换到的状态。例如,可以冻结正在后台播放音乐的网页视图,并停止音乐。为了实现一种不那么激进的资源节省策略,避免中断用户可见的背景活动,必须使用recommendedState属性。
WebEngineView类型的recommendedState
属性是一个只读属性,它在考虑网页视图当前活动的情况下计算了lifecycleState属性的一个安全限制。因此,在一个网页视图在后台播放音乐的例子中,建议状态将是Active
,因为更激进的状态会停止音乐。如果应用程序想避免中断后台活动,则应避免将网页视图放入比recommendedState给出的更激进的资源节省生命周期状态。
另请参阅WebEngineView::lifecycleState和WebEngineView::recommendedState。Widgets API中的等效物是QWebEnginePage::lifecycleState和QWebEnginePage::recommendedState。
DOM扩展
生命周期状态属性lifecycleState连接到页面生命周期API规范,该规范定义了两个新的DOM事件freeze
和resume
,并添加了一个新的布尔属性Document.wasDiscarded
。当从Active
状态过渡到Frozen
状态以及反过来时,会触发freeze
和resume
事件。Document.wasDiscarded
属性会在从Discarded
状态过渡到Active
状态时被设置为true
。
打印到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)时,会为页面创建一个新的网站实例。然而,当用户在页面上的同网站链接上单击时,现有的网站实例仅仅通过更多页面进行了扩展。
按每个网站进程
将来自不同网站的页面放入不同的进程。与按每个网站实例的进程不同,对同一网站的访问都会共享一个OS进程。
此模型的好处是减少了内存消耗,因为更多的网页会共享进程。缺点包括降低安全性和响应能力。
要启用此模型,请使用命令行参数--process-per-site
。见使用命令行参数。
单进程
仅用于调试目的,可以使用命令行参数--single-process
启用单进程模式。见使用命令行参数和Qt WebEngine调试和性能分析。
拼写检查
Qt WebEngine 支持将拼写检查集成到HTML表单中,使用户能够提交经过拼写检查的消息。当用户单击带有下划线的拼错单词时,将显示最多四个建议的默认上下文菜单。选择其中之一将替换拼错的单词。
为了能够检查拼写,拼写检查器需要词典。它支持来自 Hunspell项目 的词典,但它们必须编译成特殊的二进制格式。Hunspell 词典由两个文件组成
- 一个
.dic
文件,它包含语言的单词词典 - 一个
.aff
文件,它定义了词典中特殊标志的含义
这两个文件可以通过与Qt一起发布的 qwebengine_convert_dict
工具转换成 bdic
格式。当 Qt WebEngine 拼写检查器初始化时,它会尝试加载 bdict
词典并检查它们的一致性。
如果设置了 QTWEBENGINE_DICTIONARIES_PATH
,则拼写检查器使用指定目录中的词典而不在其他地方查找。如果没有设置,则在存在的情况下使用相对于可执行文件的 qtwebengine_dictionaries 目录。如果不存在,它将在 QT_INSTALL_PREFIX/qtwebengine_dictionaries
中查找。
在 macOS 上,根据构建时 Qt WebEngine 的配置,存在两种查找拼写检查数据的可能性
- Hunspell 词典(默认)- 使用 .bdic 词典,就像在其他平台上一样
- 本地词典 - 使用 macOS 拼写检查 API(这意味着结果将取决于已安装的操作系统词典)
因此,在 macOS Hunspell 的情况下,Qt WebEngine 将在应用程序包中的 qtwebengine_dictionaries 子目录和 Qt 框架包中的 Resources
目录中查找拼写检查数据。
总结一下,在使用 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(macOS上的 Qt 框架包)
默认情况下禁用拼写检查,可以通过在基于小部件的应用程序中使用 QWebEngineProfile::setSpellCheckEnabled() 方法或在使用 Qt Quick 应用程序时,使用 WebEngineProfile.spellCheckEnabled 属性来按配置文件启用检查。
每个配置文件定义的当前拼写检查语言可以使用 QWebEngineProfile::setSpellCheckLanguages() 方法或 WebEngineProfile.spellCheckLanguages 属性来设置。
可以通过构建和运行 Spellchecker Example 来测试此功能。
Qt WebEngine还可以使用 webengine-spellchecker
配置开关来编译也不带拼写检查支持。
qt-configure-module path\to\qtwebengine\sources -no-webengine-spellchecker
有关更多信息,请参阅 Qt 配置选项.
该功能自 Qt 5.8.0 以来已提供支持。
触摸
Qt WebEngine支持触摸设备在导航和与网页交互时使用。
应用程序可以通过以下方式禁止使用触摸事件
- 通过命令行传递标志
--touch-events=disabled
将禁用在 JavaScript API 中的触摸事件支持(这意味着ontouchstart
和相关处理器将不会存在于document.window
对象中)。触摸事件仍然会被发送到网页上。 - 通过在 QObject::installEventFilter 上使用 WebEngine 视图焦点代理对象,并过滤掉所有触摸事件,来安装一个事件过滤器对象。
查看源代码
Qt WebEngine 支持查看网页的 HTML 源代码。
此功能可以从自定义菜单中使用或分配给自定义事件。更多信息请参阅 WebEngineView::WebAction 和 QWebEnginePage::WebAction。
您可以通过在 Simple Browser 或 Nano Browser 中打开网页,并在上下文菜单中选择 页面源代码
来测试此功能。这将在新标签页中打开源代码视图。
支持使用 view-source URI scheme 在当前标签页中打开源代码视图。例如,您可以在地址栏中输入以下 URL 来查看 qt.io 网页的 HTML 源代码
view-source:https://www.qt.io/
使用 view-source URI scheme 自动完成未完整的 URL 使得此功能更易使用。例如,以下未完成的 URL 也会加载 qt.io 网页的源代码视图
view-source:qt.io
该功能自 Qt 5.8.0 以来已提供支持。
Web 通知
Qt WebEngine 支持 JavaScript Web 通知 API。应用程序必须通过使用 QWebEnginePage::Notifications 或 WebEngineView.Notifications 明确允许此功能。
该功能支持添加到Qt 5.13.0。
WebGL
Qt WebEngine 支持某些图形堆栈设置下的 WebGL。用户可以使用由 QtWebEngine 驱动的应用程序访问 chrome://gpu 页面。《图形功能状态》概览表明当前平台设置是否支持 WebGL。用户还可以查看 WebGL 报告。
WebGL 支持 默认启用。您可以使用 QWebEngineSettings::WebGLEnabled 设置禁用它。
WebRTC
WebRTC 通过简单的 API 为浏览器提供实时通信 (RTC) 功能。更多信息,请参阅 WebEngineView.Feature 和 QWebEnginePage::Feature。
您可以通过设置摄像头或麦克风,然后在 Simple Browser 或 Nano Browser 中打开 https://test.webrtc.org/ 来测试此功能。
© 2024 The Qt Company Ltd. 本文档中的贡献属于其各自的所有者。本提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 及相关标志是 The Qt Company Ltd. 在芬兰和其他国家/地区的商标。所有其他商标均为其各自所有者的财产。