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 p) |
void | setName(const QString &scriptName) |
void | setRunsOnSubFrames(bool on) |
void | setSourceCode(const QString &scriptSource) |
void | setSourceUrl(const QUrl &url) |
void | setWorldId(quint32 id) |
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。
自 Qt XML 5.8 起支持以下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 | 如果应用程序没有使用更多世界,用户设置的脚本将使用的第一个孤立世界。根据经验,如果该功能是向应用程序用户公开的,那么每个脚本都应该有自己的独立世界。 |
成员函数文档
QWebEngineScript::QWebEngineScript()
构造一个空脚本。
QWebEngineScript::QWebEngineScript(const QWebEngineScript &other)
使用other 中的内容构建用户脚本。
[noexcept]
QWebEngineScript::~QWebEngineScript()
销毁脚本。
QWebEngineScript::InjectionPoint QWebEngineScript::injectionPoint() const
返回加载过程中执行脚本的位置。默认值为QWebEngineScript::Deferred 。
注: 属性 injectionPoint 的获取函数。
另请参阅 setInjectionPoint()。
QString QWebEngineScript::name() const
返回脚本的名称。可用于从QWebEngineScriptCollection 中检索特定脚本。
注: 属性名称的获取函数。
另请参阅 setName() 和QWebEngineScriptCollection::find()。
bool QWebEngineScript::runsOnSubFrames() const
如果脚本在页面的每个帧上都执行,则返回true
;如果只在主帧上运行,则返回false
。
注: 属性 runsOnSubFrames 的获取函数。
另请参阅 setRunsOnSubFrames()。
void QWebEngineScript::setInjectionPoint(QWebEngineScript::InjectionPoint p)
设置执行脚本的时间点p 。
注: 属性设置函数injectionPoint 。
另请参阅 injectionPoint() 和InjectionPoint 。
void QWebEngineScript::setName(const QString &scriptName)
将脚本名称设置为scriptName 。
注: 属性name 的设置函数。
另请参阅 name() 。
void QWebEngineScript::setRunsOnSubFrames(bool on)
如果on 返回true
,则除主框架外,还在子框架上执行脚本。
注: 属性runsOnSubFrames 的设置函数。
另请参阅 runsOnSubFrames() 。
void QWebEngineScript::setSourceCode(const QString &scriptSource)
将脚本源设置为scriptSource 。
注: 属性sourceCode 的设置函数。
另请参阅 sourceCode() 。
void QWebEngineScript::setSourceUrl(const QUrl &url)
将用户脚本的远程源位置设置为url 。
与setSourceCode() 不同,该函数允许引用尚未加载到内存中的用户脚本,例如存储在磁盘上的用户脚本。
设置此值将改变脚本的sourceCode 。
注: 目前只支持基于文件的源代码。
注: 属性sourceUrl 的设置函数。
另请参阅 sourceUrl() 和setSourceCode()。
void QWebEngineScript::setWorldId(quint32 id)
运行此脚本时,将隔离世界的世界 ID 设置为id 。
必须介于0
和256
之间。
注: 属性worldId 的设置函数。
另请参阅 worldId().
QString QWebEngineScript::sourceCode() const
返回脚本的源代码。
注: 属性 sourceCode 的获取函数。
另请参阅 setSourceCode()。
QUrl QWebEngineScript::sourceUrl() const
返回用户脚本的远程源位置(如果有)。
注: 属性 sourceUrl 的获取函数。
另请参阅 setSourceUrl()。
[noexcept]
void QWebEngineScript::swap(QWebEngineScript &other)
将脚本内容与other 的内容对调。
quint32 QWebEngineScript::worldId() const
返回定义脚本在哪个世界中执行的世界 ID。
注: 属性 worldId 的获取函数。
另请参阅 setWorldId()。
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
。
© 2025 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.