在本页

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::DocumentCreation2脚本将在文档创建后立即执行。这不适合任何 DOM 操作。
QWebEngineScript::DocumentReady1脚本将在 DOM 就绪后立即运行。这相当于 JavaScript 中的DOMContentLoaded 事件触发。
QWebEngineScript::Deferred0脚本将在页面加载完成或文档就绪 500ms 后运行,以先到者为准。

enum QWebEngineScript::ScriptWorldId

该枚举提供了预定义的世界 ID,用于将用户脚本隔离到不同的世界中:

常量描述
QWebEngineScript::MainWorld0网页内容使用的世界。在某些情况下,它有助于将自定义功能暴露给网页内容。
QWebEngineScript::ApplicationWorld1默认隔离世界用于 JavaScript 实现的应用程序级功能。
QWebEngineScript::UserWorld2如果应用程序没有使用更多世界,用户设置的脚本将使用的第一个孤立世界。根据经验,如果该功能是向应用程序用户公开的,那么每个脚本都应该有自己的独立世界。

属性文档

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。

必须介于0256 之间。

访问函数:

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.