
HarmonyOS API:基础组件
版本:v3.1 Beta
Web
更新时间: 2023-02-17 09:19
提供具有网页显示能力的Web组件。
说明
- 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
- 示例效果请以真机运行为准,当前IDE预览器不支持。
需要权限
访问在线网页时需添加网络权限:ohos.permission.INTERNET,具体申请方式请参考权限申请声明。
子组件
无
接口
Web(options: { src: ResourceStr, controller: WebController | WebviewController})
说明
不支持转场动画。
参数:
参数名 | 参数类型 | 必填 | 参数描述 |
src | 是 | 网页资源地址。 | |
controller | 是 | 控制器。 |
示例:
加载在线网页
加载本地网页
属性
通用属性仅支持width、height、padding、margin、border。
domStorageAccess
domStorageAccess(domStorageAccess: boolean)
设置是否开启文档对象模型存储接口(DOM Storage API)权限,默认未开启。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
domStorageAccess | boolean | 是 | false | 设置是否开启文档对象模型存储接口(DOM Storage API)权限。 |
示例:
fileAccess
fileAccess(fileAccess: boolean)
设置是否开启应用中文件系统的访问,默认启用。$rawfile(filepath/filename)中rawfile路径的文件不受该属性影响而限制访问。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
fileAccess | boolean | 是 | true | 设置是否开启应用中文件系统的访问,默认启用。 |
示例:
imageAccess
imageAccess(imageAccess: boolean)
设置是否允许自动加载图片资源,默认允许。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
imageAccess | boolean | 是 | true | 设置是否允许自动加载图片资源。 |
示例:
javaScriptProxy
javaScriptProxy(javaScriptProxy: { object: object, name: string, methodList: Array<string>,
controller: WebController | WebviewController})
注入JavaScript对象到window对象中,并在window对象中调用该对象的方法。所有参数不支持更新。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
object | object | 是 | - | 参与注册的对象。只能声明方法,不能声明属性。 |
name | string | 是 | - | 注册对象的名称,与window中调用的对象名一致。 |
methodList | Array<string> | 是 | - | 参与注册的应用侧JavaScript对象的方法。 |
controller | 是 | - | 控制器。 |
示例:
javaScriptAccess
javaScriptAccess(javaScriptAccess: boolean)
设置是否允许执行JavaScript脚本,默认允许执行。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
javaScriptAccess | boolean | 是 | true | 是否允许执行JavaScript脚本。 |
示例:
mixedMode
mixedMode(mixedMode: MixedMode)
设置是否允许加载超文本传输协议(HTTP)和超文本传输安全协议(HTTPS)混合内容,默认不允许加载HTTP和HTTPS混合内容。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
mixedMode | MixedMode | 是 | MixedMode.None | 要设置的混合内容。 |
示例:
onlineImageAccess
onlineImageAccess(onlineImageAccess: boolean)
设置是否允许从网络加载图片资源(通过HTTP和HTTPS访问的资源),默认允许访问。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
onlineImageAccess | boolean | 是 | true | 设置是否允许从网络加载图片资源。 |
示例:
zoomAccess
zoomAccess(zoomAccess: boolean)
设置是否支持手势进行缩放,默认允许执行缩放。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
zoomAccess | boolean | 是 | true | 设置是否支持手势进行缩放。 |
示例:
overviewModeAccess
overviewModeAccess(overviewModeAccess: boolean)
设置是否使用概览模式加载网页,默认使用该方式。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
overviewModeAccess | boolean | 是 | true | 设置是否使用概览模式加载网页。 |
示例:
databaseAccess
databaseAccess(databaseAccess: boolean)
设置是否开启数据库存储API权限,默认不开启。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
databaseAccess | boolean | 是 | false | 设置是否开启数据库存储API权限。 |
示例:
geolocationAccess
geolocationAccess(geolocationAccess: boolean)
设置是否开启获取地理位置权限,默认开启。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
geolocationAccess | boolean | 是 | true | 设置是否开启获取地理位置权限。 |
示例:
mediaPlayGestureAccess
mediaPlayGestureAccess(access: boolean)
设置视频播放是否需要用户手动点击。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
access | boolean | 是 | true | 设置视频播放是否需要用户手动点击。 |
示例:
multiWindowAccess9+
multiWindowAccess(multiWindow: boolean)
设置是否开启多窗口权限,默认不开启。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
multiWindow | boolean | 是 | false | 设置是否开启多窗口权限。 |
示例:
cacheMode
cacheMode(cacheMode: CacheMode)
设置缓存模式。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
cacheMode | CacheMode | 是 | CacheMode.Default | 要设置的缓存模式。 |
示例:
textZoomRatio9+
textZoomRatio(textZoomRatio: number)
设置页面的文本缩放百分比,默认为100%。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
textZoomRatio | number | 是 | 100 | 要设置的页面的文本缩放百分比。 |
示例:
initialScale9+
initialScale(percent: number)
设置整体页面的缩放百分比,默认为100%。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
percent | number | 是 | 100 | 要设置的整体页面的缩放百分比。 |
示例:
userAgent
userAgent(userAgent: string)
设置用户代理。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
userAgent | string | 是 | - | 要设置的用户代理。 |
示例:
webDebuggingAccess9+
webDebuggingAccess(webDebuggingAccess: boolean)
设置是否启用网页调试功能。
参数:
参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
webDebuggingAccess | boolean | 是 | false | 设置是否启用网页调试功能。 |
示例:
事件
不支持通用事件。
onAlert
onAlert(callback: (event?: { url: string; message: string; result: JsResult }) => boolean)
网页触发alert()告警弹窗时触发回调。
参数:
参数名 | 参数类型 | 参数描述 |
url | string | 当前显示弹窗所在网页的URL。 |
message | string | 弹窗中显示的信息。 |
result | 通知Web组件用户操作行为。 |
返回值:
类型 | 说明 |
boolean | 当回调返回false时,触发默认弹窗。当回调返回true时,系统应用可以调用系统弹窗能力(包括确认和取消),并且需要根据用户的确认或取消操作调用JsResult通知Web组件最终是否离开当前页面。 |
示例:
onBeforeUnload
onBeforeUnload(callback: (event?: { url: string; message: string; result: JsResult }) => boolean)
刷新或关闭场景下,在即将离开当前页面时触发此回调。刷新或关闭当前页面应先通过点击等方式获取焦点,才会触发此回调。
参数:
参数名 | 参数类型 | 参数描述 |
url | string | 当前显示弹窗所在网页的URL。 |
message | string | 弹窗中显示的信息。 |
result | 通知Web组件用户操作行为。 |
返回值:
类型 | 说明 |
boolean | 当回调返回false时,触发默认弹窗。当回调返回true时,系统应用可以调用系统弹窗能力(包括确认和取消),并且需要根据用户的确认或取消操作调用JsResult通知Web组件最终是否离开当前页面。 |
示例:
onConfirm
onConfirm(callback: (event?: { url: string; message: string; result: JsResult }) => boolean)
网页调用confirm()告警时触发此回调。
参数:
参数名 | 参数类型 | 参数描述 |
url | string | 当前显示弹窗所在网页的URL。 |
message | string | 弹窗中显示的信息。 |
result | 通知Web组件用户操作行为。 |
返回值:
类型 | 说明 |
boolean | 当回调返回false时,触发默认弹窗。当回调返回true时,系统应用可以调用系统弹窗能力(包括确认和取消),并且需要根据用户的确认或取消操作调用JsResult通知Web组件。 |
示例:
onPrompt9+
onPrompt(callback: (event?: { url: string; message: string; value: string; result: JsResult }) => boolean)
参数:
参数名 | 参数类型 | 参数描述 |
url | string | 当前显示弹窗所在网页的URL。 |
message | string | 弹窗中显示的信息。 |
result | 通知Web组件用户操作行为。 |
返回值:
类型 | 说明 |
boolean | 当回调返回false时,触发默认弹窗。当回调返回true时,系统应用可以调用系统弹窗能力(包括确认和取消),并且需要根据用户的确认或取消操作调用JsResult通知Web组件。 |
示例:
onConsole
onConsole(callback: (event?: { message: ConsoleMessage }) => boolean)
通知宿主应用JavaScript console消息。
参数:
参数名 | 参数类型 | 参数描述 |
message | 触发的控制台信息。 |
返回值:
类型 | 说明 |
boolean | 当返回true时,该条消息将不会再打印至控制台,反之仍会打印至控制台。 |
示例:
onDownloadStart
onDownloadStart(callback: (event?: { url: string, userAgent: string, contentDisposition: string, mimetype: string, contentLength: number }) => void)
参数:
参数名 | 参数类型 | 参数描述 |
url | string | 文件下载的URL。 |
contentDisposition | string | 服务器返回的 Content-Disposition响应头,可能为空。 |
mimetype | string | 服务器返回内容媒体类型(MIME)信息。 |
contentLength | contentLength | 服务器返回文件的长度。 |
示例:
onErrorReceive
onErrorReceive(callback: (event?: { request: WebResourceRequest, error: WebResourceError }) => void)
网页加载遇到错误时触发该回调。出于性能考虑,建议此回调中尽量执行简单逻辑。
参数:
参数名 | 参数类型 | 参数描述 |
request | 网页请求的封装信息。 | |
error | 网页加载资源错误的封装信息 。 |
示例:
onHttpErrorReceive
onHttpErrorReceive(callback: (event?: { request: WebResourceRequest, response: WebResourceResponse }) => void)
网页加载资源遇到的HTTP错误(响应码>=400)时触发该回调。
参数:
参数名 | 参数类型 | 参数描述 |
request | 网页请求的封装信息。 | |
response | 资源响应的封装信息。 |
示例:
onPageBegin
onPageBegin(callback: (event?: { url: string }) => void)
网页开始加载时触发该回调,且只在主frame触发,iframe或者frameset的内容加载时不会触发此回调。
参数:
参数名 | 参数类型 | 参数描述 |
url | string | 页面的URL地址。 |
示例:
onPageEnd
onPageEnd(callback: (event?: { url: string }) => void)
网页加载完成时触发该回调,且只在主frame触发。
参数:
参数名 | 参数类型 | 参数描述 |
url | string | 页面的URL地址。 |
示例:
onProgressChange
onProgressChange(callback: (event?: { newProgress: number }) => void)
网页加载进度变化时触发该回调。
参数:
参数名 | 参数类型 | 参数描述 |
newProgress | number | 新的加载进度,取值范围为0到100的整数。 |
示例:
onTitleReceive
onTitleReceive(callback: (event?: { title: string }) => void)
网页document标题更改时触发该回调。
参数:
参数名 | 参数类型 | 参数描述 |
title | string | document标题内容。 |
示例:
onRefreshAccessedHistory
onRefreshAccessedHistory(callback: (event?: { url: string, isRefreshed: boolean }) => void)
加载网页页面完成时触发该回调,用于应用更新其访问的历史链接。
参数:
参数名 | 参数类型 | 参数描述 |
url | string | 访问的url。 |
isRefreshed | boolean | true表示该页面是被重新加载的(调用refresh接口),false表示该页面是新加载的。 |
示例:
onRenderExited9+
onRenderExited(callback: (event?: { renderExitReason: RenderExitReason }) => void)
应用渲染进程异常退出时触发该回调。
参数:
参数名 | 参数类型 | 参数描述 |
renderExitReason | RenderExitReason | 渲染进程进程异常退出的具体原因。 |
示例:
onRenderExited
onRenderExited(callback: (event?: { detail: object }) => boolean)
应用渲染进程异常退出时触发该回调。
从API version 9开始废弃,建议使用onRenderExited9+代替。
参数:
参数名 | 参数类型 | 参数描述 |
detail | object | 渲染进程进程异常退出的具体原因。 |
示例:
onShowFileSelector9+
onShowFileSelector(callback: (event?: { result: FileSelectorResult, fileSelector: FileSelectorParam }) => boolean)
调用此函数以处理具有“文件”输入类型的HTML表单,以响应用户按下的“选择文件”按钮。
参数:
参数名 | 参数类型 | 参数描述 |
result | 用于通知Web组件文件选择的结果。 | |
fileSelector | 文件选择器的相关信息。 |
返回值:
类型 | 说明 |
boolean | 当返回值为true时,用户可以调用系统提供的弹窗能力。当返回值为false时,触发Web默认弹窗。 |
示例:
onResourceLoad9+
onResourceLoad(callback: (event: {url: string}) => void)
通知Web组件所加载的资源文件url信息。
参数:
参数名 | 参数类型 | 参数描述 |
url | string | 所加载的资源文件url信息。 |
示例:
onScaleChange9+
onScaleChange(callback: (event: {oldScale: number, newScale: number}) => void)
当前页面显示比例的变化时触发该回调。
参数:
参数名 | 参数类型 | 参数描述 |
oldScale | number | 变化前的显示比例百分比。 |
newScale | number | 变化后的显示比例百分比。 |
示例:
onUrlLoadIntercept
onUrlLoadIntercept(callback: (event?: { data:string | WebResourceRequest }) => boolean)
当Web组件加载url之前触发该回调,用于是否阻止此次访问。
参数:
参数名 | 参数类型 | 参数描述 |
data | string / WebResourceRequest | url的相关信息。 |
返回值:
类型 | 说明 |
boolean | 返回true表示阻止此次加载,否则允许此次加载。 |
示例:
onInterceptRequest9+
onInterceptRequest(callback: (event?: { request: WebResourceRequest}) => WebResourceResponse)
当Web组件加载url之前触发该回调,用于拦截url并返回响应数据。
参数:
参数名 | 参数类型 | 参数描述 |
request | url请求的相关信息。 |
返回值:
类型 | 说明 |
返回响应数据则按照响应数据加载,无响应数据则返回null表示按照原来的方式加载。 |
示例:
onHttpAuthRequest9+
onHttpAuthRequest(callback: (event?: { handler: HttpAuthHandler, host: string, realm: string}) => boolean)
通知收到http auth认证请求。
参数:
参数名 | 参数类型 | 参数描述 |
handler | 通知Web组件用户操作行为。 | |
host | string | HTTP身份验证凭据应用的主机。 |
realm | string | HTTP身份验证凭据应用的域。 |
返回值:
类型 | 说明 |
boolean | 返回false表示此次认证失败,否则成功。 |
示例:
onSslErrorEventReceive9+
onSslErrorEventReceive(callback: (event: { handler: SslErrorHandler, error: SslError }) => void)
通知用户加载资源时发生SSL错误。
参数:
参数名 | 参数类型 | 参数描述 |
handler | 通知Web组件用户操作行为。 | |
error | SslError | 错误码。 |
示例:
onClientAuthenticationRequest9+
onClientAuthenticationRequest(callback: (event: {handler : ClientAuthenticationHandler, host : string, port : number, keyTypes : Array, issuers : Array}) => void)
通知用户收到SSL客户端证书请求事件。
参数:
参数名 | 参数类型 | 参数描述 |
handler | 通知Web组件用户操作行为。 | |
host | string | 请求证书服务器的主机名。 |
port | number | 请求证书服务器的端口号。 |
keyTypes | Array | 可接受的非对称秘钥类型。 |
issuers | Array | 与私钥匹配的证书可接受颁发者。 |
示例:
onPermissionRequest9+
onPermissionRequest(callback: (event?: { request: PermissionRequest }) => void)
通知收到获取权限请求。
参数:
参数名 | 参数类型 | 参数描述 |
request | 通知Web组件用户操作行为。 |
示例:
onContextMenuShow9+
onContextMenuShow(callback: (event?: { param: WebContextMenuParam, result: WebContextMenuResult }) => boolean)
长按特定元素(例如图片,链接),跳出菜单。
参数:
参数名 | 参数类型 | 参数描述 |
param | 菜单相关参数。 | |
result | 菜单相应事件传入内核。 |
返回值:
类型 | 说明 |
boolean | 自定义菜单返回true,默认菜单返回false。 |
示例:
onScroll9+
onScroll(callback: (event: {xOffset: number, yOffset: number}) => void)
通知网页滚动条滚动位置。
参数:
参数名 | 参数类型 | 参数描述 |
xOffset | number | 水平滚动条滚动所在位置。 |
yOffset | number | 竖直滚动条滚动所在位置。 |
示例:
onGeolocationShow
onGeolocationShow(callback: (event?: { origin: string, geolocation: JsGeolocation }) => void)
通知用户收到地理位置信息获取请求。
参数:
参数名 | 参数类型 | 参数描述 |
origin | string | 指定源的字符串索引。 |
geolocation | 通知Web组件用户操作行为。 |
示例:
onGeolocationHide
onGeolocationHide(callback: () => void)
通知用户先前被调用onGeolocationShow时收到地理位置信息获取请求已被取消。
参数:
参数名 | 参数类型 | 参数描述 |
callback | () => void | 地理位置信息获取请求已被取消的回调函数。 |
示例:
onFullScreenEnter9+
onFullScreenEnter(callback: (event: { handler: FullScreenExitHandler }) => void)
通知开发者web组件进入全屏模式。
参数:
参数名 | 参数类型 | 参数描述 |
handler | 用于退出全屏模式的函数句柄。 |
示例:
onFullScreenExit9+
onFullScreenExit(callback: () => void)
通知开发者web组件退出全屏模式。
参数:
参数名 | 参数类型 | 参数描述 |
callback | () => void | 退出全屏模式时的回调函数。 |
示例:
onWindowNew9+
onWindowNew(callback: (event: {isAlert: boolean, isUserTrigger: boolean, targetUrl: string, handler: ControllerHandler}) => void)
通知用户新建窗口请求。
参数:
参数名 | 参数类型 | 参数描述 |
isAlert | boolean | true代表请求创建对话框,false代表新标签页。 |
isUserTrigger | boolean | true代表用户触发,false代表非用户触发。 |
targetUrl | string | 目标url。 |
handler | 用于设置新建窗口的WebController实例。 |
示例:
onWindowExit9+
onWindowExit(callback: () => void)
通知用户窗口关闭请求。
参数:
参数名 | 参数类型 | 参数描述 |
callback | () => void | 窗口请求关闭的回调函数。 |
示例:
onSearchResultReceive9+
onSearchResultReceive(callback: (event?: {activeMatchOrdinal: number, numberOfMatches: number, isDoneCounting: boolean}) => void): WebAttribute
回调通知调用方网页页内查找的结果。
参数:
参数名 | 参数类型 | 参数描述 |
activeMatchOrdinal | number | 当前匹配的查找项的序号(从0开始)。 |
numberOfMatches | number | 所有匹配到的关键词的个数。 |
isDoneCounting | boolean | 当次页内查找操作是否结束。该方法可能会回调多次,直到isDoneCounting为true为止。 |
示例:
