QWebEngineScript类

QWebEngineScript类封装了一个JavaScript程序。 更多...

头文件 #include <QWebEngineScript>
CMakefind_package(Qt6 REQUIRED COMPONENTS WebEngineCore)
target_link_libraries(mytarget PRIVATE Qt6::WebEngineCore)
qmakeQT += webenginecore
由下面实现 WebEngineScript

公共类型

枚举InjectionPoint { DocumentCreation, DocumentReady, Deferred }
枚举ScriptWorldId { MainWorld, ApplicationWorld, UserWorld }

公共函数

QWebEngineScript()
QWebEngineScript(const QWebEngineScript &other)
~QWebEngineScript()
QWebEngineScript::InjectionPointinjectionPoint() const
QStringname() const
boolrunsOnSubFrames() const
voidsetInjectionPoint(QWebEngineScript::InjectionPoint p)
voidsetName(const QString &scriptName)
voidsetRunsOnSubFrames(bool on)
voidsetSourceCode(const QString &scriptSource)
voidsetSourceUrl(const QUrl &url)
voidsetWorldId(quint32 id)
QStringsourceCode() const
QUrlsourceUrl() const
voidswap(QWebEngineScript &other)
quint32worldId() const
booloperator!=(const QWebEngineScript &other) const
QWebEngineScript &operator=(const QWebEngineScript &other)
booloperator==(const QWebEngineScript &other) const

详细描述

QWebEngineScript允许在加载web内容时,根据injectionPoint()函数确定的不同点,程序化地向JavaScript引擎注入所谓“用户脚本”。

脚本可以执行在主JavaScript“世界”中,与来自web内容的其他JavaScript一起,或者在自己的隔离世界中。虽然可以从任何世界访问页面的DOM,但定义在某个世界中的一个函数的JavaScript变量不能从另一个世界访问。ScriptWorldId提供了一些预定义ID供此目的使用。

以下从Qt 5.8开始支持的Greasemonkey属性:@exclude@include@name@match@run-at

使用QWebEnginePage::scripts()和QWebEngineProfile::scripts()读取与单个页面或多个共享同一配置文件页面关联的脚本集合。

另见脚本注入

成员类型文档

枚举QWebEngineScript::InjectionPoint

此枚举描述了脚本注入的时间

常量描述
QWebEngineScript::DocumentCreation2脚本将在文档创建后立即执行。这不适用于任何DOM操作。
QWebEngineScript::DocumentReady1脚本将在DOM就绪后立即运行。这相当于JavaScript中DOMContentLoaded事件触发。
QWebEngineScript::Deferred0脚本将在页面加载完成时运行,或文档准备就绪后500ms,哪个先到就以哪个为准。

枚举QWebEngineScript::ScriptWorldId

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

常量描述
QWebEngineScript::MainWorld0页面网络内容使用的世界。在某些情况下,它可用于向网络内容公开自定义功能。
QWebEngineScript::ApplicationWorld1用于实现JavaScript应用级功能的默认隔离世界。
QWebEngineScript::UserWorld2当应用程序未使用更多世界时,脚本将首先使用由用户设置的脚本。一般来说,如果该功能向应用程序用户公开,则每个脚本可能应该获得其自己的隔离世界。

成员函数文档

QWebEngineScript::QWebEngineScript()

构建一个空脚本。

QWebEngineScript::QWebEngineScript(const QWebEngineScript &other)

使用other的内容构建一个用户脚本。

[noexcept] QWebEngineScript::~QWebEngineScript()

销毁一个脚本。

QWebEngineScript::InjectionPoint QWebEngineScript::injectionPoint() const

返回脚本执行的加载过程中的点。默认值为QWebEngineScript::Deferred

注意:注入点属性的获取函数。

另请参阅: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::setWorldId(quint32 id)

当运行此脚本时,将隔离世界的世界 ID 设置为 id

必须介于 0256 之间。

注意:这是属性 worldId 的设置器函数。

另请参阅:worldId

QString QWebEngineScript::sourceCode() const

返回脚本的源。

注意:这是属性 sourceCode 的获取器函数。

另请参阅:setSourceCode

[noexcept] void QWebEngineScript::swap(QWebEngineScript &other)

other 交换脚本的内容。

quint32 QWebEngineScript::worldId() const

返回定义脚本所在世界的世界 ID。

注意:这是属性 worldId 的获取器函数。

另请参阅:setWorldId

bool QWebEngineScript::operator!=(const QWebEngineScript &other) const

如果脚本不等于 其他,则返回 true,否则返回 false

QWebEngineScript &QWebEngineScript::operator=(const QWebEngineScript &other)

其他 赋值给脚本。

bool QWebEngineScript::operator==(const QWebEngineScript &other) const

如果脚本等于 其他,则返回 true,否则返回 false

© 2024 Qt公司有限公司。本文件中包含的文档贡献归其各自所有者所有。本提供的文档受GNU自由文档许可证版本1.3的条款约束,由自由软件基金会发布。Qt及其相关标志是芬兰及其它国家/地区的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。