鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)上篇

提供具有网页显示能力的Web组件,@ohos.web.webview提供web控制能力。

说明:

  • 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
  • 示例效果请以真机运行为准,当前IDE预览器不支持。

需要权限

访问在线网页时需添加网络权限:ohos.permission.INTERNET,具体申请方式请参考声明权限。

子组件

接口

Web(options: { src: ResourceStr, controller: WebviewController | WebController, incognitoMode? : boolean})

说明:

不支持转场动画。 同一页面的多个web组件,必须绑定不同的WebviewController。

参数:

参数名参数类型必填参数描述
srcResourceStr网页资源地址。如果访问本地资源文件,请使用$rawfile或者resource协议。如果加载应用包外沙箱路径的本地资源文件,请使用file://沙箱文件路径。
controllerWebviewController9+ | WebController控制器。从API Version 9开始,WebController不再维护,建议使用WebviewController替代。
incognitoMode11+boolean表示当前创建的webview是否是隐私模式。true表示创建隐私模式的webview, false表示创建正常模式的webview。
默认值:false

示例:

加载在线网页。

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller })}}
}

隐私模式Webview加载在线网页。

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller, incognitoMode: true })}}
}

加载本地网页。

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {// 通过$rawfile加载本地资源文件。Web({ src: $rawfile("index.html"), controller: this.controller })}}
}
// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {// 通过resource协议加载本地资源文件。Web({ src: "resource://rawfile/index.html", controller: this.controller })}}
}

加载沙箱路径下的本地资源文件。

  1. 通过构造的单例对象GlobalContext获取沙箱路径。

    // GlobalContext.ts
    export class GlobalContext {private constructor() {}private static instance: GlobalContext;private _objects = new Map<string, Object>();public static getContext(): GlobalContext {if (!GlobalContext.instance) {GlobalContext.instance = new GlobalContext();}return GlobalContext.instance;}getObject(value: string): Object | undefined {return this._objects.get(value);}setObject(key: string, objectClass: Object): void {this._objects.set(key, objectClass);}
    }
    // xxx.ets
    import web_webview from '@ohos.web.webview'
    import { GlobalContext } from '../GlobalContext'let url = 'file://' + GlobalContext.getContext().getObject("filesDir") + '/index.html'@Entry
    @Component
    struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {// 加载沙箱路径文件。Web({ src: url, controller: this.controller })}}
    }

  2. 修改EntryAbility.ts。

    以filesDir为例,获取沙箱路径。若想获取其他路径,请参考应用文件路径。

    // xxx.ts
    import UIAbility from '@ohos.app.ability.UIAbility';
    import AbilityConstant from '@ohos.app.ability.AbilityConstant';
    import Want from '@ohos.app.ability.Want';
    import web_webview from '@ohos.web.webview';
    import { GlobalContext } from '../GlobalContext'export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {// 通过在GlobalContext对象上绑定filesDir,可以实现UIAbility组件与UI之间的数据同步。GlobalContext.getContext().setObject("filesDir", this.context.filesDir);console.log("Sandbox path is " + GlobalContext.getContext().getObject("filesDir"))}
    }

    加载的html文件。

    <!-- index.html -->
    <!DOCTYPE html>
    <html><body><p>Hello World</p></body>
    </html>

属性

通用属性仅支持aspectRatio、backdropBlur、backgroundColor、bindContentCover、bindContextMenu、bindMenu 、bindSheet、borderColor、borderRadius、borderStyle、borderWidth、clip、constraintSize、defaultFocus、focusable、tabIndex、groupDefaultFocus、focusOnTouch、displayPriority、enabled、flexBasis、flexGrow、flexShrink、layoutWeight、id、gridOffset、gridSpan、useSizeType、height、touchable、margin、markAnchor、offset、width、zIndex、visibility、scale、transform、responseRegion、size、stateStyles、opacity、shadow、sharedTransition、transition。

domStorageAccess

domStorageAccess(domStorageAccess: boolean)

设置是否开启文档对象模型存储接口(DOM Storage API)权限,默认未开启。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名参数类型必填默认值参数描述
domStorageAccessbooleanfalse设置是否开启文档对象模型存储接口(DOM Storage API)权限。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).domStorageAccess(true)}}
}

fileAccess

fileAccess(fileAccess: boolean)

设置是否开启应用中文件系统的访问,默认启用。$rawfile(filepath/filename)中rawfile路径的文件不受该属性影响而限制访问。

参数:

参数名参数类型必填默认值参数描述
fileAccessbooleantrue设置是否开启应用中文件系统的访问,默认启用。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).fileAccess(true)}}
}

imageAccess

imageAccess(imageAccess: boolean)

设置是否允许自动加载图片资源,默认允许。

参数:

参数名参数类型必填默认值参数描述
imageAccessbooleantrue设置是否允许自动加载图片资源。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).imageAccess(true)}}
}

javaScriptProxy

javaScriptProxy(javaScriptProxy: { object: object, name: string, methodList: Array<string>, controller: WebviewController | WebController})

注入JavaScript对象到window对象中,并在window对象中调用该对象的方法。所有参数不支持更新。此接口只支持注册一个对象,若需要注册多个对象请使用registerJavaScriptProxy9+。

参数:

参数名参数类型必填默认值参数描述
objectobject-参与注册的对象。只能声明方法,不能声明属性。
namestring-注册对象的名称,与window中调用的对象名一致。
methodListArray<string>-参与注册的应用侧JavaScript对象的方法。
controllerWebviewController9+ | WebController-控制器。从API Version 9开始,WebController不再维护,建议使用WebviewController替代。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'class TestObj {constructor() {}test(data1: string, data2: string, data3: string): string {console.log("data1:" + data1)console.log("data2:" + data2)console.log("data3:" + data3)return "AceString"}toString(): void {console.log('toString' + "interface instead.")}
}@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()testObj = new TestObj();build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).javaScriptAccess(true).javaScriptProxy({object: this.testObj,name: "objName",methodList: ["test", "toString"],controller: this.controller,})}}
}

javaScriptAccess

javaScriptAccess(javaScriptAccess: boolean)

设置是否允许执行JavaScript脚本,默认允许执行。

参数:

参数名参数类型必填默认值参数描述
javaScriptAccessbooleantrue是否允许执行JavaScript脚本。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).javaScriptAccess(true)}}
}

overScrollMode11+

overScrollMode(mode: OverScrollMode)

设置Web过滚动模式,默认关闭。当过滚动模式开启时,当用户在Web界面上滑动到边缘时,Web会通过弹性动画弹回界面。

参数:

参数名参数类型必填默认值参数描述
modeOverScrollModeOverScrollMode.NEVER设置Web的过滚动模式为关闭或开启。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State mode: OverScrollMode = OverScrollMode.ALWAYSbuild() {Column() {Web({ src: 'www.example.com', controller: this.controller }).overScrollMode(this.mode)}}
}

mixedMode

mixedMode(mixedMode: MixedMode)

设置是否允许加载超文本传输协议(HTTP)和超文本传输安全协议(HTTPS)混合内容,默认不允许加载HTTP和HTTPS混合内容。

参数:

参数名参数类型必填默认值参数描述
mixedModeMixedModeMixedMode.None要设置的混合内容。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State mode: MixedMode = MixedMode.Allbuild() {Column() {Web({ src: 'www.example.com', controller: this.controller }).mixedMode(this.mode)}}
}

onlineImageAccess

onlineImageAccess(onlineImageAccess: boolean)

设置是否允许从网络加载图片资源(通过HTTP和HTTPS访问的资源),默认允许访问。

参数:

参数名参数类型必填默认值参数描述
onlineImageAccessbooleantrue设置是否允许从网络加载图片资源。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).onlineImageAccess(true)}}
}

zoomAccess

zoomAccess(zoomAccess: boolean)

设置是否支持手势进行缩放,默认允许执行缩放。

参数:

参数名参数类型必填默认值参数描述
zoomAccessbooleantrue设置是否支持手势进行缩放。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).zoomAccess(true)}}
}

overviewModeAccess

overviewModeAccess(overviewModeAccess: boolean)

设置是否使用概览模式加载网页,默认使用该方式。当前仅支持移动设备。

参数:

参数名参数类型必填默认值参数描述
overviewModeAccessbooleantrue设置是否使用概览模式加载网页。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).overviewModeAccess(true)}}
}

databaseAccess

databaseAccess(databaseAccess: boolean)

设置是否开启数据库存储API权限,默认不开启。

参数:

参数名参数类型必填默认值参数描述
databaseAccessbooleanfalse设置是否开启数据库存储API权限。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).databaseAccess(true)}}
}

geolocationAccess

geolocationAccess(geolocationAccess: boolean)

设置是否开启获取地理位置权限,默认开启。

参数:

参数名参数类型必填默认值参数描述
geolocationAccessbooleantrue设置是否开启获取地理位置权限。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).geolocationAccess(true)}}
}

mediaPlayGestureAccess

mediaPlayGestureAccess(access: boolean)

设置有声视频播放是否需要用户手动点击,静音视频播放不受该接口管控,默认需要。

参数:

参数名参数类型必填默认值参数描述
accessbooleantrue设置有声视频播放是否需要用户手动点击。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State access: boolean = truebuild() {Column() {Web({ src: 'www.example.com', controller: this.controller }).mediaPlayGestureAccess(this.access)}}
}

multiWindowAccess9+

multiWindowAccess(multiWindow: boolean)

设置是否开启多窗口权限,默认不开启。 使能多窗口权限时,需要实现onWindowNew事件,示例代码参考onWindowNew事件。

参数:

参数名参数类型必填默认值参数描述
multiWindowbooleanfalse设置是否开启多窗口权限。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).multiWindowAccess(false)}}
}

horizontalScrollBarAccess9+

horizontalScrollBarAccess(horizontalScrollBar: boolean)

设置是否显示横向滚动条,包括系统默认滚动条和用户自定义滚动条。默认显示。

参数:

参数名参数类型必填默认值参数描述
horizontalScrollBarbooleantrue设置是否显示横向滚动条。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: $rawfile('index.html'), controller: this.controller }).horizontalScrollBarAccess(true)}}
}

加载的html文件。

<!--index.html-->
<!DOCTYPE html>
<html>
<head><title>Demo</title><style>body {width:3000px;height:3000px;padding-right:170px;padding-left:170px;border:5px solid blueviolet}</style>
</head>
<body>
Scroll Test
</body>
</html>

verticalScrollBarAccess9+

verticalScrollBarAccess(verticalScrollBar: boolean)

设置是否显示纵向滚动条,包括系统默认滚动条和用户自定义滚动条。默认显示。

参数:

参数名参数类型必填默认值参数描述
verticalScrollBarbooleantrue设置是否显示纵向滚动条。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: $rawfile('index.html'), controller: this.controller }).verticalScrollBarAccess(true)}}
}

加载的html文件。

<!--index.html-->
<!DOCTYPE html>
<html>
<head><title>Demo</title><style>body {width:3000px;height:3000px;padding-right:170px;padding-left:170px;border:5px solid blueviolet}</style>
</head>
<body>
Scroll Test
</body>
</html>

password(deprecated)

password(password: boolean)

设置是否应保存密码。该接口为空接口。

说明:

从API version 10开始废弃,并且不再提供新的接口作为替代。

cacheMode

cacheMode(cacheMode: CacheMode)

设置缓存模式。

参数:

参数名参数类型必填默认值参数描述
cacheModeCacheModeCacheMode.Default要设置的缓存模式。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State mode: CacheMode = CacheMode.Nonebuild() {Column() {Web({ src: 'www.example.com', controller: this.controller }).cacheMode(this.mode)}}
}

copyOptions11+

copyOptions(value: CopyOptions)

设置剪贴板复制范围选项。

参数:

参数名参数类型必填默认值参数描述
valueCopyOptionsCopyOptions.Cross_Device要设置的剪贴板复制范围选项。

示例:

import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController();
build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).copyOptions(CopyOptions.None)}
}
}

textZoomAtio(deprecated)

textZoomAtio(textZoomAtio: number)

设置页面的文本缩放百分比,默认为100%。

从API version 9开始不再维护,建议使用textZoomRatio9+代替。

参数:

参数名参数类型必填默认值参数描述
textZoomAtionumber100要设置的页面的文本缩放百分比。取值为整数,范围为(0, +∞)。

示例:

// xxx.ets
@Entry
@Component
struct WebComponent {controller: WebController = new WebController()@State atio: number = 150build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).textZoomAtio(this.atio)}}
}

textZoomRatio9+

textZoomRatio(textZoomRatio: number)

设置页面的文本缩放百分比,默认为100%。

参数:

参数名参数类型必填默认值参数描述
textZoomRationumber100要设置的页面的文本缩放百分比。取值为整数,范围为(0, +∞)。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State atio: number = 150build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).textZoomRatio(this.atio)}}
}

initialScale9+

initialScale(percent: number)

设置整体页面的缩放百分比,默认为100。

参数:

参数名参数类型必填默认值参数描述
percentnumber100要设置的整体页面的缩放百分比。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State percent: number = 100build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).initialScale(this.percent)}}
}

userAgent(deprecated)

userAgent(userAgent: string)

设置用户代理。

说明:

从API version 8开始支持,从API version 10开始废弃。建议使用setCustomUserAgent10+替代。

参数:

参数名参数类型必填默认值参数描述
userAgentstring-要设置的用户代理。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State userAgent:string = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).userAgent(this.userAgent)}}
}

blockNetwork9+

blockNetwork(block: boolean)

设置Web组件是否阻止从网络加载资源。

参数:

参数名参数类型必填默认值参数描述
blockbooleanfalse设置Web组件是否阻止从网络加载资源。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State block: boolean = truebuild() {Column() {Web({ src: 'www.example.com', controller: this.controller }).blockNetwork(this.block)}}
}

defaultFixedFontSize9+

defaultFixedFontSize(size: number)

设置网页的默认等宽字体大小。

参数:

参数名参数类型必填默认值参数描述
sizenumber13设置网页的默认等宽字体大小,单位px。输入值的范围为-2^31到2^31-1,实际渲染时超过72的值按照72进行渲染,低于1的值按照1进行渲染。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State fontSize: number = 16build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).defaultFixedFontSize(this.fontSize)}}
}

defaultFontSize9+

defaultFontSize(size: number)

设置网页的默认字体大小。

参数:

参数名参数类型必填默认值参数描述
sizenumber16设置网页的默认字体大小,单位px。输入值的范围为-2^31到2^31-1,实际渲染时超过72的值按照72进行渲染,低于1的值按照1进行渲染。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State fontSize: number = 13build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).defaultFontSize(this.fontSize)}}
}

minFontSize9+

minFontSize(size: number)

设置网页字体大小最小值。

参数:

参数名参数类型必填默认值参数描述
sizenumber8设置网页字体大小最小值,单位px。输入值的范围为-2^31到2^31-1,实际渲染时超过72的值按照72进行渲染,低于1的值按照1进行渲染。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State fontSize: number = 13build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).minFontSize(this.fontSize)}}
}

minLogicalFontSize9+

minLogicalFontSize(size: number)

设置网页逻辑字体大小最小值。

参数:

参数名参数类型必填默认值参数描述
sizenumber8设置网页逻辑字体大小最小值,单位px。输入值的范围为-2^31到2^31-1,实际渲染时超过72的值按照72进行渲染,低于1的值按照1进行渲染。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State fontSize: number = 13build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).minLogicalFontSize(this.fontSize)}}
}

webFixedFont9+

webFixedFont(family: string)

设置网页的fixed font字体库。

参数:

参数名参数类型必填默认值参数描述
familystringmonospace设置网页的fixed font字体库。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State family: string = "monospace"build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).webFixedFont(this.family)}}
}

webSansSerifFont9+

webSansSerifFont(family: string)

设置网页的sans serif font字体库。

参数:

参数名参数类型必填默认值参数描述
familystringsans-serif设置网页的sans serif font字体库。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State family: string = "sans-serif"build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).webSansSerifFont(this.family)}}
}

webSerifFont9+

webSerifFont(family: string)

设置网页的serif font字体库。

参数:

参数名参数类型必填默认值参数描述
familystringserif设置网页的serif font字体库。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State family: string = "serif"build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).webSerifFont(this.family)}}
}

webStandardFont9+

webStandardFont(family: string)

设置网页的standard font字体库。

参数:

参数名参数类型必填默认值参数描述
familystringsans serif设置网页的standard font字体库。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State family: string = "sans-serif"build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).webStandardFont(this.family)}}
}

webFantasyFont9+

webFantasyFont(family: string)

设置网页的fantasy font字体库。

参数:

参数名参数类型必填默认值参数描述
familystringfantasy设置网页的fantasy font字体库。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State family: string = "fantasy"build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).webFantasyFont(this.family)}}
}

webCursiveFont9+

webCursiveFont(family: string)

设置网页的cursive font字体库。

参数:

参数名参数类型必填默认值参数描述
familystringcursive设置网页的cursive font字体库。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State family: string = "cursive"build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).webCursiveFont(this.family)}}
}

darkMode9+

darkMode(mode: WebDarkMode)

设置Web深色模式,默认关闭。当深色模式开启时,Web将启用媒体查询prefers-color-scheme中网页所定义的深色样式,若网页未定义深色样式,则保持原状。如需开启强制深色模式,建议配合forceDarkAccess使用。

参数:

参数名参数类型必填默认值参数描述
modeWebDarkModeWebDarkMode.Off设置Web的深色模式为关闭、开启或跟随系统。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State mode: WebDarkMode = WebDarkMode.Onbuild() {Column() {Web({ src: 'www.example.com', controller: this.controller }).darkMode(this.mode)}}
}

forceDarkAccess9+

forceDarkAccess(access: boolean)

设置网页是否开启强制深色模式。默认关闭。该属性仅在darkMode开启深色模式时生效。

参数:

参数名参数类型必填默认值参数描述
accessbooleanfalse设置网页是否开启强制深色模式。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State mode: WebDarkMode = WebDarkMode.On@State access: boolean = truebuild() {Column() {Web({ src: 'www.example.com', controller: this.controller }).darkMode(this.mode).forceDarkAccess(this.access)}}
}

tableData(deprecated)

tableData(tableData: boolean)

设置是否应保存表单数据。该接口为空接口。

说明:

从API version 10开始废弃,并且不再提供新的接口作为替代。

wideViewModeAccess(deprecated)

wideViewModeAccess(wideViewModeAccess: boolean)

设置web是否支持html中meta标签的viewport属性。该接口为空接口。

说明:

从API version 10开始废弃,并且不再提供新的接口作为替代。

pinchSmooth9+

pinchSmooth(isEnabled: boolean)

设置网页是否开启捏合流畅模式,默认不开启。

参数:

参数名参数类型必填默认值参数描述
isEnabledbooleanfalse网页是否开启捏合流畅模式。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).pinchSmooth(true)}}
}

allowWindowOpenMethod10+

allowWindowOpenMethod(flag: boolean)

设置网页是否可以通过JavaScript自动打开新窗口。

该属性为true时,可通过JavaScript自动打开新窗口。该属性为false时,用户行为仍可通过JavaScript自动打开新窗口,但非用户行为不能通过JavaScript自动打开新窗口。此处的用户行为是指用户在5秒内请求打开新窗口(window.open)。

该属性仅在javaScriptAccess开启时生效。

该属性在multiWindowAccess开启时打开新窗口,关闭时打开本地窗口。

该属性的默认值与系统属性persist.web.allowWindowOpenMethod.enabled 保持一致,如果未设置系统属性则默认值为false。

检查系统配置项persist.web.allowWindowOpenMethod.enabled 是否开启。

通过hdc shell param get persist.web.allowWindowOpenMethod.enabled 查看,若配置项为0或不存在, 可通过命令hdc shell param set persist.web.allowWindowOpenMethod.enabled 1 开启配置。

参数:

参数名参数类型必填默认值参数描述
flagboolean默认值与系统参数关联,当系统参数persist.web.allowWindowOpenMethod.enabled为true时,默认值为true, 否则为false网页是否可以通过JavaScript自动打开窗口。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
//在同一page页有两个web组件。在WebComponent新开窗口时,会跳转到NewWebViewComp。
@CustomDialog
struct NewWebViewComp {
controller?: CustomDialogController
webviewController1: web_webview.WebviewController = new web_webview.WebviewController()
build() {Column() {Web({ src: "", controller: this.webviewController1 }).javaScriptAccess(true).multiWindowAccess(false).onWindowExit(()=> {console.info("NewWebViewComp onWindowExit")if (this.controller) {this.controller.close()}})}}
}@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()dialogController: CustomDialogController | null = nullbuild() {Column() {Web({ src: 'www.example.com', controller: this.controller }).javaScriptAccess(true)//需要使能multiWindowAccess.multiWindowAccess(true).allowWindowOpenMethod(true).onWindowNew((event) => {if (this.dialogController) {this.dialogController.close()}let popController:web_webview.WebviewController = new web_webview.WebviewController()this.dialogController = new CustomDialogController({builder: NewWebViewComp({webviewController1: popController})})this.dialogController.open()//将新窗口对应WebviewController返回给Web内核。//如果不需要打开新窗口请调用event.handler.setWebController接口设置成null。//若不调用event.handler.setWebController接口,会造成render进程阻塞。event.handler.setWebController(popController)})}}
}

mediaOptions10+

mediaOptions(options: WebMediaOptions)

设置Web媒体播放的策略,其中包括:Web中的音频在重新获焦后能够自动续播的有效期、应用内多个Web实例的音频是否独占。

说明:

  • 同一Web实例中的多个音频均视为同一音频。
  • 该媒体播放策略将同时管控有声视频。
  • 属性参数更新后需重新播放音频方可生效。
  • 建议为所有Web组件设置相同的audioExclusive值。

参数:

参数名参数类型必填默认值参数描述
optionsWebMediaOptions{resumeInterval: 0, audioExclusive: true}设置Web的媒体策略。其中,resumeInterval的默认值为0表示不自动续播。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State options: WebMediaOptions = {resumeInterval: 10, audioExclusive: true}build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).mediaOptions(this.options)}}
}

javaScriptOnDocumentStart11+

javaScriptOnDocumentStart(scripts: Array<ScriptItem>)

将JavaScript脚本注入到Web组件中,当指定页面或者文档开始加载时,该脚本将在其来源与scriptRules匹配的任何页面中执行。

说明:

  • 该脚本将在页面的任何JavaScript代码之前运行,并且DOM树此时可能尚未加载、渲染完毕。

参数:

参数名参数类型必填默认值参数描述
scriptsArray<ScriptItem>-需要注入的的ScriptItem数组

ets示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct Index {controller: web_webview.WebviewController = new web_webview.WebviewController()private localStorage: string ="if (typeof(Storage) !== 'undefined') {" +"   localStorage.setItem('color', 'Red');" +"}";@State scripts: Array<ScriptItem> = [{ script: this.localStorage, scriptRules: ["*"] }];build() {Column({ space: 20 }) {Web({ src: $rawfile('index.html'), controller: this.controller }).javaScriptAccess(true).domStorageAccess(true).backgroundColor(Color.Grey).javaScriptOnDocumentStart(this.scripts).width('100%').height('100%')}}
}

HTML示例:

<!-- index.html -->
<!DOCTYPE html>
<html><head><meta charset="utf-8"></head><body style="font-size: 30px;" onload='bodyOnLoadLocalStorage()'>Hello world!<div id="result"></div></body><script type="text/javascript">function bodyOnLoadLocalStorage() {if (typeof(Storage) !== 'undefined') {document.getElementById('result').innerHTML = localStorage.getItem('color');} else {document.getElementById('result').innerHTML = 'Your browser does not support localStorage.';}}</script>
</html>

layoutMode11+

layoutMode(mode: WebLayoutMode)

设置Web布局模式。

说明:

目前只支持两种web布局模式,分别为Web布局跟随系统WebLayoutMode.NONE和Web基于页面大小的自适应网页布局WebLayoutMode.FIT_CONTENT。默认为WebLayoutMode.NONE模式。

参数:

参数名参数类型必填默认值参数描述
modeWebLayoutModeWebLayoutMode.NONE设置web布局模式,跟随系统或自适应布局。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State mode: WebLayoutMode = WebLayoutMode.FIT_CONTENTbuild() {Column() {Web({ src: 'www.example.com', controller: this.controller }).layoutMode(this.mode)}}
}

nestedScroll11+

nestedScroll(value: NestedScrollOptions)

调用以设置嵌套滚动选项。

说明:

  • 设置向前向后两个方向上的嵌套滚动模式,实现与父组件的滚动联动。
  • 支持设置不同的向前向后两个方向上的嵌套滚动模式。
  • 默认scrollForward和scrollBackward模式为NestedScrollMode.SELF_FIRST。

参数:

参数名参数类型必填参数描述
valueNestedScrollOptions可滚动组件滚动时的嵌套滚动选项。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).nestedScroll({scrollForward: NestedScrollMode.SELF_FIRST,scrollBackward: NestedScrollMode.SELF_FIRST,})}}
}

enableNativeEmbedMode11+

enableNativeEmbedMode(mode: boolean)

设置是否开启同层渲染功能,默认不开启。

参数:

参数名参数类型必填默认值参数描述
modebooleanfalse是否开启同层渲染功能。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: 'www.example.com', controller: this.controller }).enableNativeEmbedMode(true)}}
}

事件

通用事件仅支持onAppear、onDisAppear、onBlur、onFocus、onDragEnd、onDragEnter、onDragStart、onDragMove、onDragLeave、onDrop、onHover、onMouse、onKeyEvent、onTouch、onVisibleAreaChange。

onAlert

onAlert(callback: (event?: { url: string; message: string; result: JsResult }) => boolean)

网页触发alert()告警弹窗时触发回调。

参数:

参数名参数类型参数描述
urlstring当前显示弹窗所在网页的URL。
messagestring弹窗中显示的信息。
resultJsResult通知Web组件用户操作行为。

返回值:

类型说明
boolean当回调返回true时,应用可以调用系统弹窗能力(包括确认和取消),并且需要根据用户的确认或取消操作调用JsResult通知Web组件最终是否离开当前页面。当回调返回false时,函数中绘制的自定义弹窗无效。

示例:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()build() {Column() {Web({ src: $rawfile("index.html"), controller: this.controller }).onAlert((event) => {if (event) {console.log("event.url:" + event.url)console.log("event.message:" + event.message)AlertDialog.show({title: 'onAlert',message: 'text',primaryButton: {value: 'cancel',action: () => {event.result.handleCancel()}},secondaryButton: {value: 'ok',action: () => {event.result.handleConfirm()}},cancel: () => {event.result.handleCancel()}})}return true})}}
}

加载的html文件。

<!--index.html-->
<!DOCTYPE html>
<html>
<head><meta name="viewport" content="width=device-width, initial-scale=1.0" charset="utf-8">
</head>
<body><h1>WebView onAlert Demo</h1><button onclick="myFunction()">Click here</button><script>function myFunction() {alert("Hello World");}</script>
</body>
</html>

最后,有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(Harmony NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(Harmony NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

腾讯T10级高工技术,安卓全套VIP内容 →Android全套学习资料

腾讯T10级高工技术,安卓全套VIP课程

鸿蒙(Harmony NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java项目:基于springboot实现的OA协同办公系统(源码+数据库+毕业论文)

一、项目简介 本项目是一套基于Springbootvue实现的付费自习室系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型2

目录 1.模块的总体结构 1.1从工作空间导入输入信号 1.2FIR滤波器 2.Subsystem 3.MATLAB Function 文章灵感来源于MATLAB官方免费教程&#xff1a;HDL Coder Self-Guided Tutorial 考虑到MATLAB官网的英文看着慢&#xff0c;再加上视频讲解老印浓浓的咖喱味&#xff0c;我…

【CSP】2021-12-2 序列查询新解 分段处理 用乘法代替加法减少时间复杂度(思想是离散化)

2021-12-2 序列查询新解 分段处理 用乘法代替加法减少时间复杂度&#xff08;思想是离散化&#xff09;2021-12-2 序列查询新解 分段处理 用乘法代替加法减少时间复杂度&#xff08;思想是离散化&#xff09; 2021-12-2 序列查询新解 分段处理 用乘法代替加法减少时间复杂度&am…

echarts绘制柱状图

<template><div><div>【大区数据信息】</div><div ref"target" class"w-full h-full" ></div></div> </template><script setup> import { ref, onMounted, watch} from "vue"; import *…

RC522刷卡电路设计及程序

一、RC522刷卡电路组成 基于RC522的刷卡电路如上图所示。该电路组成主要分为三部分&#xff1a; Receiving Circuit&#xff1a;接收电路&#xff0c;接收卡发送的数据。 Filtering Impedence-Transtorm circuit:滤波和阻抗变换电路&#xff0c;抑制高次谐波并优化到读卡器天线…

手把手写深度学习(23):视频扩散模型之Video DataLoader

手把手写深度学习(0)&#xff1a;专栏文章导航 前言&#xff1a;训练自己的视频扩散模型的第一步就是准备数据集&#xff0c;而且这个数据集是text-video或者image-video的多模态数据集&#xff0c;这篇博客手把手教读者如何写一个这样扩散模型的的Video DataLoader。 目录 准…

【Vue3】深入理解Vue3路由器的工作原理to的两种写法

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

Realsense 相机SDK学习(一)——librealsense使用方法及bug解决(不使用Ros)

一.介绍 realsense相机是一个intel开发出来的一款深度相机&#xff0c;我之前使用他来跑过slam&#xff0c;也配置过他的驱动&#xff0c;在此附上realsense的相机驱动安装方法&#xff1a;Ubuntu20.04安装Intelrealsense相机驱动&#xff08;涉及Linux内核降级&#xff09; …

【四】【算法分析与设计】贪心算法的初见

455. 分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有…

AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀【文末送书-38】

文章目录 Python驱动的金融智能&#xff1a;数据分析、交易策略与风险管理Python在金融数据分析中的应用 实战案例&#xff1a;基于ChatGPT的金融事件预测AI时代Python金融大数据分析实战&#xff1a;ChatGPT让金融大数据分析插上翅膀【文末送书-38】 Python驱动的金融智能&…

eVTOL适航领先新构型,沃飞长空布局空中交通新局面

汽车、火车、飞机……人类对于出行方式的探索从未停止。随着沃飞长空旗下首款自研eVTOL(飞行汽车)AE200适航技术验证机一阶段顺利试飞,eVTOL(飞行汽车)这种面向空中交通的新型交通工具进入了我们的视野,那么eVTOL(飞行汽车)是什么?eVTOL(飞行汽车)前景怎么样? eVTOL(飞行汽车…

Power Apps 学习笔记 -- Action

文章目录 1. Action 简介2. Action 配置3. 待补充 1. Action 简介 Action基础教程 : Action概述 操作Action: 1. 操作Action类似于工作流Workflow&#xff0c;提供一些重用性的操作&#xff0c;允许工作流或其他Web服务端点调用(例如javascript). 2. Action 类似于c#当中的一个…

专题二 -滑动窗口 - leetcode 209. 长度最小的子数组 | 中等难度

leetcode 209. 长度最小的子数组 leetcode 209. 长度最小的子数组 | 中等难度1. 题目详情1. 原题链接2. 基础框架 2. 解题思路1. 题目分析2. 算法原理3. 时间复杂度 3. 代码实现4. 知识与收获 leetcode 209. 长度最小的子数组 | 中等难度 1. 题目详情 给定一个含有 n 个正整数…

Android14音频进阶:AudioTrack如何巧妙衔接AudioFlinger(五十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

人工智能迷惑行为大赏!

目录 人工智能迷惑行为大赏 一&#xff1a;人工智能的“幽默”瞬间 1. 图像识别出现AI的极限 2. 小批量梯度下降优化器 3. 智能聊天机器人的冰雹问题 4. 大语言模型-3经典语录 二&#xff1a;技术原理探究 1. 深度学习 2. 机器学习 3. 自然语言处理 4. 计算机视觉 三…

博士推荐 | 拥有10多年纺织工程经验,纤维与聚合物科学博士

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态&#xff0c;用科技解决职业领域问题&#xff0c;提升行业数字化服务水平&#xff0c;提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…

什么是架构?架构设计原则是哪些?什么是设计模式?设计模式有哪些?

什么是架构?架构设计原则是哪些?什么是设计模式?设计模式有哪些? 架构的本质 架构本身是一种抽象的、来自建筑学的体系结构,其在企业及IT系统中被广泛应用。 架构的本质是对事物复杂性的管理,是对一个企业、一个公司、一个系统复杂的内部关系进行结构化、体系化的抽象,…

骨传导游泳耳机哪个牌子好?四款实力扛鼎的游泳耳机推荐

游泳是一项全身性的运动&#xff0c;能够有效锻炼身体、释放压力。然而&#xff0c;在水下欣赏音乐却成为了一项难题。普通的耳机在水中无法使用&#xff0c;而骨传导技术的出现&#xff0c;让游泳与音乐完美结合。今天&#xff0c;我们将为大家推荐四款超强的的骨传导游泳耳机…

分享一个国内可用的AIGC网站,PC/手机端通用|免费无限制,支持Claude3 Claude2

背景 AIGC作为一种基于人工智能技术的自然语言处理工具&#xff0c;近期的热度直接沸腾&#x1f30b;。 作为一个AI爱好者&#xff0c;翻遍了各大基于AIGC的网站&#xff0c;终于找到一个免费&#xff01;免登陆&#xff01;手机电脑通用&#xff01;国内可直接对话的AIGC&am…

EasyRecovery恢复电脑丢失数据怎么样?

电脑是我们大家熟悉并且常用的数据存储设备&#xff0c;也是综合性非常强的数据处理设备。对于电脑设备来讲&#xff0c;最主要的数据存储介质是硬盘&#xff0c;电脑硬盘被划分成多个分区&#xff0c;在电脑上表现为C盘&#xff0c;E盘等&#xff0c;用来保存系统文件以及其他…