鸿蒙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.hqwc.cn/news/538965.html

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

相关文章

【动态规划】代码随想录算法训练营第五十三天 |1143.最长公共子序列, 1035.不相交的线 ,53. 最大子序和 动态规划 (待补充)

1143.最长公共子序列 1、题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2、文章讲解&#xff1a;代码随想录 3、题目&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长公共子序列的长度。 一个字符串的 子序列 是指这样一个…

基于Python的中医药知识问答系统设计与实现

[简介] 这篇文章主要介绍了基于Python的中医药知识问答系统的设计与实现。该系统利用Python编程语言&#xff0c;结合中医药领域的知识和技术&#xff0c;实现了一个功能强大的问答系统。文章首先介绍了中医药知识的特点和传统问答系统的局限性&#xff0c;然后提出了设计思路…

阿里通义灵码全面公测,来看看它的水平怎么样?

作者&#xff1a;颖欣 人工智能作为新一轮的技术革命&#xff0c;已经开始渗透到软件开发领域&#xff0c;改变着传统的编码模式。如何利用 AI 技术提升软件开发的效率和质量&#xff0c;成为各家研究的重点。去年 10 月阿里云正式发布的通义灵码 - 智能编码助手&#xff0c;如…

新生宿舍管理系统|基于springboot框架+ Mysql+Java+B/S架构的新生宿舍管理系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 学生功能模块 管理员功能 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究目的 开发环境 项目部…

【Vue2】slot 插槽全家桶

插槽-默认插槽 插槽的基本语法 组件内需要定制的结构部分&#xff0c;改用<slot></slot>占位使用组件时, <MyDialog></MyDialog>标签内部, 传入结构替换slot给插槽传入内容时&#xff0c;可以传入纯文本、html标签、组件 插槽-默认值 封装组件时&am…

在dpvs上实现ICMP的源进源出

目录 1. 缘起2. 源码分析3. 让ICMP也走源进源出1. 缘起 在网络通信中,当一个请求报文从源主机到达目标主机,并经过中间路由器或交换机进行转发时,请求报文进入主机A的路径和响应报文离开主机A的路径可能不同。这种情况下,就会出现所谓的三角路径问题。如下图: 具体来说,…

心理核算的原则和依据

不论你的收入来源是工资、赌博所得、六合彩中奖或者其他&#xff0c;你都应该将增加的收入花在同样的物品上。在这个意义上&#xff0c;钱是无差异的。

uniapp运行钉钉小程序

因项目原因&#xff0c;公司需要在钉钉里面开发小程序。之前用uniapp开发过app&#xff0c;H5&#xff0c;小程序。还真没尝试过钉钉小程序&#xff0c;今天就简单的记录下uniapp运行钉钉小程序中的过程。 在项目目录新建package.json文件&#xff0c;在文件中添加如下代码&am…

yolov5模型压缩-PAGCP

参考论文:Performance-aware Approximation of Global Channel Pruning for Multitask CNNs(https://arxiv.org/pdf/2303.11923.pdf) 基本原理:研究不同卷积核之间的联合重要性来实现全局剪枝策略 模型压缩效果 在yolov5上进行剪枝训练,流程如下: 1、按照yolo正常训练 2、…

HTTPS基础

目录 HTTPS简介 HTTP与HTTPS的区别 CA证书 案例 服务器生成私钥与证书 查看证书和私钥存放路径 Cockpit(图像化服务管理工具) HTTPS简介 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容&#xff0c;不提供任何方式的数据加密&…

day-19 合并后数组中的最大元素

思路&#xff1a;从后向前遍历数组&#xff0c;用tans记录每一种可能的最大值&#xff0c;ans为实际最大值。 注意&#xff1a;若ans0,返回nums[0] 要用long code class Solution {public long maxArrayValue(int[] nums) {long ans0;long tans0;boolean flagtrue;for(int in…

【办公类-22-13】周计划系列(5-4)“周计划-04 周计划表格内“小结”加粗 (2024年调整版本)

作品展示&#xff1a;——word表格的关键词批量加粗 背景需求&#xff1a; 生成正确的19周周计划内容 每个教案里面的“重点提问&#xff1a;”“小结&#xff1a;”“过渡语&#xff1a;”都是加粗设置 但是由于提取的是“活动过程下面的的整段内容&#xff0c;所以的加粗字体…