QWebEngineScript Class
QWebEngineScript 类封装了 JavaScript 程序。更多
| 头文件: | #include <QWebEngineScript> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS WebEngineCore)target_link_libraries(mytarget PRIVATE Qt6::WebEngineCore) |
| qmake: | QT += webenginecore |
| 在 QML 中: | webEngineScript |
公共类型
| enum | InjectionPoint { DocumentCreation, DocumentReady, Deferred } |
| enum | ScriptWorldId { MainWorld, ApplicationWorld, UserWorld } |
属性
|
|
公共功能
| QWebEngineScript() | |
| QWebEngineScript(const QWebEngineScript &other) | |
| ~QWebEngineScript() | |
| QWebEngineScript::InjectionPoint | injectionPoint() const |
| QString | name() const |
| bool | runsOnSubFrames() const |
| void | setInjectionPoint(QWebEngineScript::InjectionPoint) |
| void | setName(const QString &) |
| void | setRunsOnSubFrames(bool on) |
| void | setSourceCode(const QString &) |
| void | setSourceUrl(const QUrl &url) |
| void | setWorldId(quint32) |
| QString | sourceCode() const |
| QUrl | sourceUrl() const |
| void | swap(QWebEngineScript &other) |
| quint32 | worldId() const |
| bool | operator!=(const QWebEngineScript &other) const |
| QWebEngineScript & | operator=(const QWebEngineScript &other) |
| bool | operator==(const QWebEngineScript &other) const |
详细说明
QWebEngineScript 可以在加载网页内容的过程中,通过injectionPoint() 在不同的位置向 JavaScript 引擎注入所谓的用户脚本。
脚本既可以在主 JavaScript世界中与来自网页内容的其他 JavaScript 一起执行,也可以在自己的独立世界中执行。虽然可以从任何世界访问页面的 DOM,但在一个世界中定义的函数的 JavaScript 变量却不能从另一个世界访问。ScriptWorldId 为此提供了一些预定义的 ID。
支持以下Greasemonkey属性:@exclude,@include,@name,@match, 和@run-at 。
使用QWebEnginePage::scripts() 和QWebEngineProfile::scripts() 访问与单个页面或共享相同配置文件的多个页面相关的脚本集合。
另请参阅 脚本注入。
成员类型文档
enum QWebEngineScript::InjectionPoint
该枚举描述了脚本注入的时间:
| 常量 | 值 | 描述 |
|---|---|---|
QWebEngineScript::DocumentCreation | 2 | 脚本将在文档创建后立即执行。这不适合任何 DOM 操作。 |
QWebEngineScript::DocumentReady | 1 | 脚本将在 DOM 就绪后立即运行。这相当于 JavaScript 中的DOMContentLoaded 事件触发。 |
QWebEngineScript::Deferred | 0 | 脚本将在页面加载完成或文档就绪 500ms 后运行,以先到者为准。 |
enum QWebEngineScript::ScriptWorldId
该枚举提供了预定义的世界 ID,用于将用户脚本隔离到不同的世界中:
| 常量 | 值 | 描述 |
|---|---|---|
QWebEngineScript::MainWorld | 0 | 网页内容使用的世界。在某些情况下,它有助于将自定义功能暴露给网页内容。 |
QWebEngineScript::ApplicationWorld | 1 | 默认隔离世界用于 JavaScript 实现的应用程序级功能。 |
QWebEngineScript::UserWorld | 2 | 如果应用程序没有使用更多世界,用户设置的脚本将使用的第一个孤立世界。根据经验,如果该功能是向应用程序用户公开的,那么每个脚本都应该有自己的独立世界。 |
属性文档
injectionPoint : InjectionPoint
此属性表示加载过程中执行脚本的时间点。
默认值为QWebEngineScript::Deferred 。
访问功能:
| QWebEngineScript::InjectionPoint | injectionPoint() const |
| void | setInjectionPoint(QWebEngineScript::InjectionPoint) |
另请参阅 InjectionPoint 。
name : QString
此属性包含脚本名称。
可用于从QWebEngineScriptCollection 中检索特定脚本。
访问函数:
| QString | name() const |
| void | setName(const QString &) |
另请参阅 QWebEngineScriptCollection::find().
runsOnSubFrames : bool
该属性用于确定脚本是在页面的每个帧上执行,还是仅在主帧上执行。
访问功能:
| bool | runsOnSubFrames() const |
| void | setRunsOnSubFrames(bool on) |
sourceCode : QString
此属性包含脚本的源代码。
访问功能:
| QString | sourceCode() const |
| void | setSourceCode(const QString &) |
sourceUrl : QUrl
该属性包含用户脚本的远程源位置(如果有)。
与setSourceCode() 不同,设置该属性可以引用尚未加载到内存中的用户脚本,例如存储在磁盘上的用户脚本。
设置此值将改变脚本的sourceCode 。
注意: 目前只支持基于文件的源代码。
访问功能:
| QUrl | sourceUrl() const |
| void | setSourceUrl(const QUrl &url) |
另请参阅 sourceCode 。
worldId : quint32
此属性包含定义脚本在哪个世界中执行的世界 ID。
必须介于0 和256 之间。
访问函数:
| quint32 | worldId() const |
| void | setWorldId(quint32) |
成员函数文档
QWebEngineScript::QWebEngineScript()
构造一个空脚本。
QWebEngineScript::QWebEngineScript(const QWebEngineScript &other)
使用other 中的内容构建用户脚本。
[noexcept] QWebEngineScript::~QWebEngineScript()
销毁脚本。
[noexcept] void QWebEngineScript::swap(QWebEngineScript &other)
将脚本内容与other 的内容对调。
bool QWebEngineScript::operator!=(const QWebEngineScript &other) const
如果脚本不等于other ,则返回true ,否则返回false 。
QWebEngineScript &QWebEngineScript::operator=(const QWebEngineScript &other)
为脚本指定other 。
bool QWebEngineScript::operator==(const QWebEngineScript &other) const
如果脚本等于other ,则返回true ,否则返回false 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.