• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2
3# @ohos.web.webview (Webview)
4
5@ohos.web.webview提供web控制能力,[web](../arkui-ts/ts-basic-components-web.md)组件提供具有网页显示能力。
6
7> **说明:**
8>
9> - 本模块接口从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
10>
11> - 示例效果请以真机运行为准,当前IDE预览器不支持。
12
13## 需要权限
14
15访问在线网页时需添加网络权限:ohos.permission.INTERNET,具体申请方式请参考[权限申请声明](../../security/accesstoken-guidelines.md)。
16
17## 导入模块
18
19```ts
20import web_webview from '@ohos.web.webview';
21```
22
23## once
24
25once(type: string, callback: Callback\<void\>): void
26
27订阅一次指定类型Web事件的回调。
28
29**系统能力:** SystemCapability.Web.Webview.Core
30
31**参数:**
32
33| 参数名  | 类型              | 必填 | 说明                  |
34| ------- | ---------------- | ---- | -------------------- |
35| type     | string          | 是   | Web事件的类型,目前支持:"webInited"(Web初始化完成)。      |
36| headers | Callback\<void\> | 是   | 所订阅的回调函数。 |
37
38**示例:**
39
40```ts
41// xxx.ets
42import web_webview from '@ohos.web.webview'
43
44web_webview.once("webInited", () => {
45  console.log("setCookie")
46  web_webview.WebCookieManager.setCookie("https://www.example.com", "a=b")
47})
48
49@Entry
50@Component
51struct WebComponent {
52  controller: web_webview.WebviewController = new web_webview.WebviewController();
53
54  build() {
55    Column() {
56      Web({ src: 'www.example.com', controller: this.controller })
57    }
58  }
59}
60```
61
62## WebMessagePort
63
64通过WebMessagePort可以进行消息的发送以及接收。
65
66### close
67
68close(): void
69
70关闭该消息端口。
71
72**系统能力:** SystemCapability.Web.Webview.Core
73
74**示例:**
75
76```ts
77// xxx.ets
78import web_webview from '@ohos.web.webview'
79
80@Entry
81@Component
82struct WebComponent {
83  controller: web_webview.WebviewController = new web_webview.WebviewController();
84  msgPort: web_webview.WebMessagePort[] = null;
85
86  build() {
87    Column() {
88      Button('close')
89        .onClick(() => {
90          if (this.msgPort && this.msgPort[1]) {
91            this.msgPort[1].close();
92          } else {
93            console.error("msgPort is null, Please initialize first");
94          }
95        })
96      Web({ src: 'www.example.com', controller: this.controller })
97    }
98  }
99}
100```
101
102### postMessageEvent
103
104postMessageEvent(message: WebMessage): void
105
106发送消息。完整示例代码参考[postMessage](#postmessage)
107
108**系统能力:** SystemCapability.Web.Webview.Core
109
110**参数:**
111
112| 参数名  | 类型   | 必填 | 说明           |
113| ------- | ------ | ---- | :------------- |
114| message | [WebMessage](#webmessage) | 是   | 要发送的消息。 |
115
116**错误码:**
117
118以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
119
120| 错误码ID | 错误信息                              |
121| -------- | ------------------------------------- |
122| 17100010 | Can not post message using this port. |
123
124**示例:**
125
126```ts
127// xxx.ets
128import web_webview from '@ohos.web.webview'
129
130@Entry
131@Component
132struct WebComponent {
133  controller: web_webview.WebviewController = new web_webview.WebviewController();
134  ports: web_webview.WebMessagePort[];
135
136  build() {
137    Column() {
138      Button('postMessageEvent')
139        .onClick(() => {
140          try {
141            this.ports = this.controller.createWebMessagePorts();
142            this.controller.postMessage('__init_port__', [this.ports[0]], '*');
143            this.ports[1].postMessageEvent("post message from ets to html5");
144          } catch (error) {
145            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
146          }
147        })
148      Web({ src: 'www.example.com', controller: this.controller })
149    }
150  }
151}
152```
153
154### onMessageEvent
155
156onMessageEvent(callback: (result: WebMessage) => void): void
157
158注册回调函数,接收HTML5侧发送过来的消息。完整示例代码参考[postMessage](#postmessage)
159
160**系统能力:** SystemCapability.Web.Webview.Core
161
162**参数:**
163
164| 参数名   | 类型     | 必填 | 说明                 |
165| -------- | -------- | ---- | :------------------- |
166| result | [WebMessage](#webmessage) | 是   | 接收到的消息。 |
167
168**错误码:**
169
170以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
171
172| 错误码ID | 错误信息                                        |
173| -------- | ----------------------------------------------- |
174| 17100006 | Can not register message event using this port. |
175
176**示例:**
177
178```ts
179// xxx.ets
180import web_webview from '@ohos.web.webview'
181
182@Entry
183@Component
184struct WebComponent {
185  controller: web_webview.WebviewController = new web_webview.WebviewController();
186  ports: web_webview.WebMessagePort[];
187
188  build() {
189    Column() {
190      Button('onMessageEvent')
191        .onClick(() => {
192          try {
193            this.ports = this.controller.createWebMessagePorts();
194            this.ports[1].onMessageEvent((msg) => {
195              if (typeof(msg) == "string") {
196                console.log("received string message from html5, string is:" + msg);
197              } else if (typeof(msg) == "object") {
198                if (msg instanceof ArrayBuffer) {
199                  console.log("received arraybuffer from html5, length is:" + msg.byteLength);
200                } else {
201                  console.log("not support");
202                }
203              } else {
204                console.log("not support");
205              }
206            })
207          } catch (error) {
208            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
209          }
210        })
211      Web({ src: 'www.example.com', controller: this.controller })
212    }
213  }
214}
215```
216
217## WebviewController
218
219通过WebviewController可以控制Web组件各种行为。一个WebviewController对象只能控制一个Web组件,且必须在Web组件和WebviewController绑定后,才能调用WebviewController上的方法(静态方法除外)。
220
221### initializeWebEngine
222
223static initializeWebEngine(): void
224
225在 Web 组件初始化之前,通过此接口加载 Web 引擎的动态库文件,以提高启动性能。
226
227**系统能力:** SystemCapability.Web.Webview.Core
228
229**示例:**
230
231本示例以 MainAbility 为例,描述了在 Ability 创建阶段完成 Web 组件动态库加载的功能。
232
233```ts
234// xxx.ts
235import UIAbility from '@ohos.app.ability.UIAbility';
236import web_webview from '@ohos.web.webview';
237
238export default class EntryAbility extends UIAbility {
239    onCreate(want, launchParam) {
240        console.log("EntryAbility onCreate")
241        web_webview.WebviewController.initializeWebEngine()
242        globalThis.abilityWant = want
243        console.log("EntryAbility onCreate done")
244    }
245}
246```
247
248### 创建对象
249
250```ts
251// xxx.ets
252import web_webview from '@ohos.web.webview';
253
254@Entry
255@Component
256struct WebComponent {
257  controller: web_webview.WebviewController = new web_webview.WebviewController();
258
259  build() {
260    Column() {
261      Web({ src: 'www.example.com', controller: this.controller })
262    }
263  }
264}
265```
266
267### setWebDebuggingAccess
268
269static setWebDebuggingAccess(webDebuggingAccess: boolean): void
270
271设置是否启用网页调试功能。
272
273**系统能力:** SystemCapability.Web.Webview.Core
274
275**参数:**
276
277| 参数名              | 类型    | 必填   |  说明 |
278| ------------------ | ------- | ---- | ------------- |
279| webDebuggingAccess | boolean | 是   | 设置是否启用网页调试功能。|
280
281```ts
282// xxx.ets
283import web_webview from '@ohos.web.webview';
284
285@Entry
286@Component
287struct WebComponent {
288  controller: web_webview.WebviewController = new web_webview.WebviewController();
289
290  aboutToAppear():void {
291    try {
292      web_webview.WebviewController.setWebDebuggingAccess(true);
293    } catch(error) {
294      console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
295    }
296  }
297
298  build() {
299    Column() {
300      Web({ src: 'www.example.com', controller: this.controller })
301    }
302  }
303}
304```
305
306### loadUrl
307
308loadUrl(url: string | Resource, headers?: Array\<WebHeader>): void
309
310加载指定的URL。
311
312**系统能力:** SystemCapability.Web.Webview.Core
313
314**参数:**
315
316| 参数名  | 类型             | 必填 | 说明                  |
317| ------- | ---------------- | ---- | :-------------------- |
318| url     | string \| Resource | 是   | 需要加载的 URL。      |
319| headers | Array\<[WebHeader](#webheader)> | 否   | URL的附加HTTP请求头。 |
320
321**错误码:**
322
323以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
324
325| 错误码ID | 错误信息                                                     |
326| -------- | ------------------------------------------------------------ |
327| 17100001 | Init error. The WebviewController must be associated with a Web component. |
328| 17100002 | Invalid url.                                                 |
329| 17100003 | Invalid resource path or file type.                          |
330
331**示例:**
332
333```ts
334// xxx.ets
335import web_webview from '@ohos.web.webview'
336
337@Entry
338@Component
339struct WebComponent {
340  controller: web_webview.WebviewController = new web_webview.WebviewController();
341
342  build() {
343    Column() {
344      Button('loadUrl')
345        .onClick(() => {
346          try {
347            //需要加载的URL是string类型
348            this.controller.loadUrl('www.example.com');
349          } catch (error) {
350            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
351          }
352        })
353      Web({ src: 'www.example.com', controller: this.controller })
354    }
355  }
356}
357```
358
359```ts
360// xxx.ets
361import web_webview from '@ohos.web.webview'
362
363@Entry
364@Component
365struct WebComponent {
366  controller: web_webview.WebviewController = new web_webview.WebviewController();
367
368  build() {
369    Column() {
370      Button('loadUrl')
371        .onClick(() => {
372          try {
373            //带参数headers
374            this.controller.loadUrl('www.example.com', [{headerKey: "headerKey", headerValue: "headerValue"}]);
375          } catch (error) {
376            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
377          }
378        })
379      Web({ src: 'www.example.com', controller: this.controller })
380    }
381  }
382}
383```
384
385加载本地网页,加载本地资源文件有两种方式。
3861.$rawfile方式。
387```ts
388// xxx.ets
389import web_webview from '@ohos.web.webview'
390
391@Entry
392@Component
393struct WebComponent {
394  controller: web_webview.WebviewController = new web_webview.WebviewController();
395
396  build() {
397    Column() {
398      Button('loadUrl')
399        .onClick(() => {
400          try {
401            //需要加载的URL是Resource类型
402            this.controller.loadUrl($rawfile('xxx.html'));
403          } catch (error) {
404            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
405          }
406        })
407      Web({ src: 'www.example.com', controller: this.controller })
408    }
409  }
410}
411```
412
4132.加载沙箱路径下的本地资源文件,可以参考[web](../arkui-ts/ts-basic-components-web.md#web)加载沙箱路径的示例代码。
414
415```html
416<!-- xxx.html -->
417<!DOCTYPE html>
418<html>
419  <body>
420    <p>Hello World</p>
421  </body>
422</html>
423```
424
425### loadData
426
427loadData(data: string, mimeType: string, encoding: string, baseUrl?: string, historyUrl?: string): void
428
429加载指定的数据。
430
431**系统能力:** SystemCapability.Web.Webview.Core
432
433**参数:**
434
435| 参数名     | 类型   | 必填 | 说明                                                         |
436| ---------- | ------ | ---- | ------------------------------------------------------------ |
437| data       | string | 是   | 按照”Base64“或者”URL"编码后的一段字符串。                    |
438| mimeType   | string | 是   | 媒体类型(MIME)。                                           |
439| encoding   | string | 是   | 编码类型,具体为“Base64"或者”URL编码。                       |
440| baseUrl    | string | 否   | 指定的一个URL路径(“http”/“https”/"data"协议),并由Web组件赋值给window.origin。 |
441| historyUrl | string | 否   | 用作历史记录所使用的URL。非空时,历史记录以此URL进行管理。当baseUrl为空时,此属性无效。 |
442
443**错误码:**
444
445以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
446
447| 错误码ID | 错误信息                                                     |
448| -------- | ------------------------------------------------------------ |
449| 17100001 | Init error. The WebviewController must be associated with a Web component. |
450| 17100002 | Invalid url.                                                 |
451
452**示例:**
453
454```ts
455// xxx.ets
456import web_webview from '@ohos.web.webview'
457
458@Entry
459@Component
460struct WebComponent {
461  controller: web_webview.WebviewController = new web_webview.WebviewController();
462
463  build() {
464    Column() {
465      Button('loadData')
466        .onClick(() => {
467          try {
468            this.controller.loadData(
469              "<html><body bgcolor=\"white\">Source:<pre>source</pre></body></html>",
470              "text/html",
471              "UTF-8"
472            );
473          } catch (error) {
474            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
475          }
476        })
477      Web({ src: 'www.example.com', controller: this.controller })
478    }
479  }
480}
481```
482
483加载本地资源
484```ts
485// xxx.ets
486import web_webview from '@ohos.web.webview'
487
488@Entry
489@Component
490struct WebComponent {
491  controller: web_webview.WebviewController = new web_webview.WebviewController();
492  updataContent: string = '<body><div><image src=file:///data/storage/el1/bundle/entry/resources/rawfile/xxx.png alt="image -- end" width="500" height="250"></image></div></body>'
493
494  build() {
495    Column() {
496      Button('loadData')
497        .onClick(() => {
498          try {
499            this.controller.loadData(this.updataContent, "text/html", "UTF-8", " ", " ");
500          } catch (error) {
501            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
502          }
503        })
504      Web({ src: 'www.example.com', controller: this.controller })
505    }
506  }
507}
508```
509
510### accessForward
511
512accessForward(): boolean
513
514当前页面是否可前进,即当前页面是否有前进历史记录。
515
516**系统能力:** SystemCapability.Web.Webview.Core
517
518**返回值:**
519
520| 类型    | 说明                              |
521| ------- | --------------------------------- |
522| boolean | 可以前进返回true,否则返回false。 |
523
524**错误码:**
525
526以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
527
528| 错误码ID | 错误信息                                                     |
529| -------- | ------------------------------------------------------------ |
530| 17100001 | Init error. The WebviewController must be associated with a Web component. |
531
532**示例:**
533
534```ts
535// xxx.ets
536import web_webview from '@ohos.web.webview'
537
538@Entry
539@Component
540struct WebComponent {
541  controller: web_webview.WebviewController = new web_webview.WebviewController();
542
543  build() {
544    Column() {
545      Button('accessForward')
546        .onClick(() => {
547          try {
548            let result = this.controller.accessForward();
549            console.log('result:' + result);
550          } catch (error) {
551            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
552          }
553        })
554      Web({ src: 'www.example.com', controller: this.controller })
555    }
556  }
557}
558```
559
560### forward
561
562forward(): void
563
564按照历史栈,前进一个页面。一般结合accessForward一起使用。
565
566**系统能力:** SystemCapability.Web.Webview.Core
567
568**错误码:**
569
570以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
571
572| 错误码ID | 错误信息                                                     |
573| -------- | ------------------------------------------------------------ |
574| 17100001 | Init error. The WebviewController must be associated with a Web component. |
575
576**示例:**
577
578```ts
579// xxx.ets
580import web_webview from '@ohos.web.webview'
581
582@Entry
583@Component
584struct WebComponent {
585  controller: web_webview.WebviewController = new web_webview.WebviewController();
586
587  build() {
588    Column() {
589      Button('forward')
590        .onClick(() => {
591          try {
592            this.controller.forward();
593          } catch (error) {
594            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
595          }
596        })
597      Web({ src: 'www.example.com', controller: this.controller })
598    }
599  }
600}
601```
602
603### accessBackward
604
605accessBackward(): boolean
606
607当前页面是否可后退,即当前页面是否有返回历史记录。
608
609**系统能力:** SystemCapability.Web.Webview.Core
610
611**返回值:**
612
613| 类型    | 说明                             |
614| ------- | -------------------------------- |
615| boolean | 可以后退返回true,否则返回false。 |
616
617**错误码:**
618
619以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
620
621| 错误码ID | 错误信息                                                     |
622| -------- | ------------------------------------------------------------ |
623| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
624
625**示例:**
626
627```ts
628// xxx.ets
629import web_webview from '@ohos.web.webview'
630
631@Entry
632@Component
633struct WebComponent {
634  controller: web_webview.WebviewController = new web_webview.WebviewController();
635
636  build() {
637    Column() {
638      Button('accessBackward')
639        .onClick(() => {
640          try {
641            let result = this.controller.accessBackward();
642            console.log('result:' + result);
643          } catch (error) {
644            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
645          }
646        })
647      Web({ src: 'www.example.com', controller: this.controller })
648    }
649  }
650}
651```
652
653### backward
654
655backward(): void
656
657按照历史栈,后退一个页面。一般结合accessBackward一起使用。
658
659**系统能力:** SystemCapability.Web.Webview.Core
660
661**错误码:**
662
663以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
664
665| 错误码ID | 错误信息                                                     |
666| -------- | ------------------------------------------------------------ |
667| 17100001 | Init error. The WebviewController must be associated with a Web component. |
668
669**示例:**
670
671```ts
672// xxx.ets
673import web_webview from '@ohos.web.webview'
674
675@Entry
676@Component
677struct WebComponent {
678  controller: web_webview.WebviewController = new web_webview.WebviewController();
679
680  build() {
681    Column() {
682      Button('backward')
683        .onClick(() => {
684          try {
685            this.controller.backward();
686          } catch (error) {
687            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
688          }
689        })
690      Web({ src: 'www.example.com', controller: this.controller })
691    }
692  }
693}
694```
695
696### onActive
697
698onActive(): void
699
700调用此接口通知Web组件进入前台激活状态。
701
702**系统能力:** SystemCapability.Web.Webview.Core
703
704**错误码:**
705
706以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
707
708| 错误码ID | 错误信息                                                     |
709| -------- | ------------------------------------------------------------ |
710| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
711
712**示例:**
713
714```ts
715// xxx.ets
716import web_webview from '@ohos.web.webview'
717
718@Entry
719@Component
720struct WebComponent {
721  controller: web_webview.WebviewController = new web_webview.WebviewController();
722
723  build() {
724    Column() {
725      Button('onActive')
726        .onClick(() => {
727          try {
728            this.controller.onActive();
729          } catch (error) {
730            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
731          }
732        })
733      Web({ src: 'www.example.com', controller: this.controller })
734    }
735  }
736}
737```
738
739### onInactive
740
741onInactive(): void
742
743调用此接口通知Web组件进入未激活状态。
744
745**系统能力:** SystemCapability.Web.Webview.Core
746
747**错误码:**
748
749以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
750
751| 错误码ID | 错误信息                                                     |
752| -------- | ------------------------------------------------------------ |
753| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
754
755**示例:**
756
757```ts
758// xxx.ets
759import web_webview from '@ohos.web.webview'
760
761@Entry
762@Component
763struct WebComponent {
764  controller: web_webview.WebviewController = new web_webview.WebviewController();
765
766  build() {
767    Column() {
768      Button('onInactive')
769        .onClick(() => {
770          try {
771            this.controller.onInactive();
772          } catch (error) {
773            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
774          }
775        })
776      Web({ src: 'www.example.com', controller: this.controller })
777    }
778  }
779}
780```
781
782### refresh
783refresh(): void
784
785调用此接口通知Web组件刷新网页。
786
787**系统能力:** SystemCapability.Web.Webview.Core
788
789**错误码:**
790
791以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
792
793| 错误码ID | 错误信息                                                     |
794| -------- | ------------------------------------------------------------ |
795| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
796
797**示例:**
798
799```ts
800// xxx.ets
801import web_webview from '@ohos.web.webview'
802
803@Entry
804@Component
805struct WebComponent {
806  controller: web_webview.WebviewController = new web_webview.WebviewController();
807
808  build() {
809    Column() {
810      Button('refresh')
811        .onClick(() => {
812          try {
813            this.controller.refresh();
814          } catch (error) {
815            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
816          }
817        })
818      Web({ src: 'www.example.com', controller: this.controller })
819    }
820  }
821}
822```
823
824### accessStep
825
826accessStep(step: number): boolean
827
828当前页面是否可前进或者后退给定的step步。
829
830**系统能力:** SystemCapability.Web.Webview.Core
831
832**参数:**
833
834| 参数名 | 类型 | 必填 | 说明                                   |
835| ------ | -------- | ---- | ------------------------------------------ |
836| step   | number   | 是   | 要跳转的步数,正数代表前进,负数代表后退。 |
837
838**返回值:**
839
840| 类型    | 说明               |
841| ------- | ------------------ |
842| boolean | 页面是否前进或后退 |
843
844**错误码:**
845
846以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
847
848| 错误码ID | 错误信息                                                     |
849| -------- | ------------------------------------------------------------ |
850| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
851
852**示例:**
853
854```ts
855// xxx.ets
856import web_webview from '@ohos.web.webview'
857
858@Entry
859@Component
860struct WebComponent {
861  controller: web_webview.WebviewController = new web_webview.WebviewController();
862  @State steps: number = 2;
863
864  build() {
865    Column() {
866      Button('accessStep')
867        .onClick(() => {
868          try {
869            let result = this.controller.accessStep(this.steps);
870            console.log('result:' + result);
871          } catch (error) {
872            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
873          }
874        })
875      Web({ src: 'www.example.com', controller: this.controller })
876    }
877  }
878}
879```
880
881### clearHistory
882
883clearHistory(): void
884
885删除所有前进后退记录。
886
887**系统能力:** SystemCapability.Web.Webview.Core
888
889**错误码:**
890
891以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
892
893| 错误码ID | 错误信息                                                     |
894| -------- | ------------------------------------------------------------ |
895| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
896
897**示例:**
898
899```ts
900// xxx.ets
901import web_webview from '@ohos.web.webview'
902
903@Entry
904@Component
905struct WebComponent {
906  controller: web_webview.WebviewController = new web_webview.WebviewController();
907
908  build() {
909    Column() {
910      Button('clearHistory')
911        .onClick(() => {
912          try {
913            this.controller.clearHistory();
914          } catch (error) {
915            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
916          }
917        })
918      Web({ src: 'www.example.com', controller: this.controller })
919    }
920  }
921}
922```
923
924### getHitTest
925
926getHitTest(): WebHitTestType
927
928获取当前被点击区域的元素类型。
929
930**系统能力:** SystemCapability.Web.Webview.Core
931
932**返回值:**
933
934| 类型                                                         | 说明                   |
935| ------------------------------------------------------------ | ---------------------- |
936| [WebHitTestType](#webhittesttype)| 被点击区域的元素类型。 |
937
938**错误码:**
939
940以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
941
942| 错误码ID | 错误信息                                                     |
943| -------- | ------------------------------------------------------------ |
944| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
945
946**示例:**
947
948```ts
949// xxx.ets
950import web_webview from '@ohos.web.webview'
951
952@Entry
953@Component
954struct WebComponent {
955  controller: web_webview.WebviewController = new web_webview.WebviewController();
956
957  build() {
958    Column() {
959      Button('getHitTest')
960        .onClick(() => {
961          try {
962            let hitTestType = this.controller.getHitTest();
963            console.log("hitTestType: " + hitTestType);
964          } catch (error) {
965            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
966          }
967        })
968      Web({ src: 'www.example.com', controller: this.controller })
969    }
970  }
971}
972```
973
974### registerJavaScriptProxy
975
976registerJavaScriptProxy(object: object, name: string, methodList: Array\<string>): void
977
978注入JavaScript对象到window对象中,并在window对象中调用该对象的方法。注册后,须调用[refresh](#refresh)接口生效。
979
980**系统能力:** SystemCapability.Web.Webview.Core
981
982**参数:**
983
984| 参数名     | 类型       | 必填 | 说明                                        |
985| ---------- | -------------- | ---- | ------------------------------------------------------------ |
986| object     | object         | 是   | 参与注册的应用侧JavaScript对象。只能声明方法,不能声明属性 。其中方法的参数和返回类型只能为string,number,boolean |
987| name       | string         | 是   | 注册对象的名称,与window中调用的对象名一致。注册后window对象可以通过此名字访问应用侧JavaScript对象。 |
988| methodList | Array\<string> | 是   | 参与注册的应用侧JavaScript对象的方法。                       |
989
990**错误码:**
991
992以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
993
994| 错误码ID | 错误信息                                                     |
995| -------- | ------------------------------------------------------------ |
996| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
997
998**示例:**
999
1000```ts
1001// xxx.ets
1002import web_webview from '@ohos.web.webview'
1003
1004@Entry
1005@Component
1006struct Index {
1007  controller: web_webview.WebviewController = new web_webview.WebviewController();
1008  testObj = {
1009    test: (data) => {
1010      return "ArkUI Web Component";
1011    },
1012    toString: () => {
1013      console.log('Web Component toString');
1014    }
1015  }
1016
1017  build() {
1018    Column() {
1019      Button('refresh')
1020        .onClick(() => {
1021          try {
1022            this.controller.refresh();
1023          } catch (error) {
1024            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
1025          }
1026        })
1027      Button('Register JavaScript To Window')
1028        .onClick(() => {
1029          try {
1030            this.controller.registerJavaScriptProxy(this.testObj, "objName", ["test", "toString"]);
1031          } catch (error) {
1032            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
1033          }
1034        })
1035      Web({ src: $rawfile('index.html'), controller: this.controller })
1036        .javaScriptAccess(true)
1037    }
1038  }
1039}
1040```
1041
1042### runJavaScript
1043
1044runJavaScript(script: string, callback : AsyncCallback\<string>): void
1045
1046异步执行JavaScript脚本,并通过回调方式返回脚本执行的结果。runJavaScript需要在loadUrl完成后,比如onPageEnd中调用。
1047
1048**系统能力:** SystemCapability.Web.Webview.Core
1049
1050**参数:**
1051
1052| 参数名   | 类型                 | 必填 | 说明                         |
1053| -------- | -------------------- | ---- | ---------------------------- |
1054| script   | string                   | 是   | JavaScript脚本。                                             |
1055| callback | AsyncCallback\<string> | 是   | 回调执行JavaScript脚本结果。JavaScript脚本若执行失败或无返回值时,返回null。 |
1056
1057**错误码:**
1058
1059以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1060
1061| 错误码ID | 错误信息                                                     |
1062| -------- | ------------------------------------------------------------ |
1063| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
1064
1065**示例:**
1066
1067```ts
1068import web_webview from '@ohos.web.webview'
1069
1070@Entry
1071@Component
1072struct WebComponent {
1073  controller: web_webview.WebviewController = new web_webview.WebviewController();
1074  @State webResult: string = ''
1075
1076  build() {
1077    Column() {
1078      Text(this.webResult).fontSize(20)
1079      Web({ src: $rawfile('index.html'), controller: this.controller })
1080        .javaScriptAccess(true)
1081        .onPageEnd(e => {
1082          try {
1083            this.controller.runJavaScript(
1084              'test()',
1085              (error, result) => {
1086                if (error) {
1087                  console.info(`run JavaScript error: ` + JSON.stringify(error))
1088                  return;
1089                }
1090                if (result) {
1091                  this.webResult = result
1092                  console.info(`The test() return value is: ${result}`)
1093                }
1094              });
1095            console.info('url: ', e.url);
1096          } catch (error) {
1097            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
1098          }
1099        })
1100    }
1101  }
1102}
1103```
1104
1105### runJavaScript
1106
1107runJavaScript(script: string): Promise\<string>
1108
1109异步执行JavaScript脚本,并通过Promise方式返回脚本执行的结果。runJavaScript需要在loadUrl完成后,比如onPageEnd中调用。
1110
1111**系统能力:** SystemCapability.Web.Webview.Core
1112
1113**参数:**
1114
1115| 参数名 | 类型 | 必填 | 说明         |
1116| ------ | -------- | ---- | ---------------- |
1117| script | string   | 是   | JavaScript脚本。 |
1118
1119**返回值:**
1120
1121| 类型            | 说明                                                |
1122| --------------- | --------------------------------------------------- |
1123| Promise\<string> | Promise实例,返回脚本执行的结果,执行失败返回null。 |
1124
1125**错误码:**
1126
1127以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1128
1129| 错误码ID | 错误信息                                                     |
1130| -------- | ------------------------------------------------------------ |
1131| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
1132
1133**示例:**
1134
1135```ts
1136// xxx.ets
1137import web_webview from '@ohos.web.webview'
1138
1139@Entry
1140@Component
1141struct WebComponent {
1142  controller: web_webview.WebviewController = new web_webview.WebviewController();
1143  @State webResult: string = '';
1144
1145  build() {
1146    Column() {
1147      Text(this.webResult).fontSize(20)
1148      Web({ src: $rawfile('index.html'), controller: this.controller })
1149        .javaScriptAccess(true)
1150        .onPageEnd(e => {
1151          try {
1152            this.controller.runJavaScript('test()')
1153              .then(function (result) {
1154                console.log('result: ' + result);
1155              })
1156              .catch(function (error) {
1157                console.error("error: " + error);
1158              })
1159            console.info('url: ', e.url);
1160          } catch (error) {
1161            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
1162          }
1163        })
1164    }
1165  }
1166}
1167```
1168
1169### deleteJavaScriptRegister
1170
1171deleteJavaScriptRegister(name: string): void
1172
1173删除通过registerJavaScriptProxy注册到window上的指定name的应用侧JavaScript对象。删除后立即生效,无须调用[refresh](#refresh)接口。
1174
1175**系统能力:** SystemCapability.Web.Webview.Core
1176
1177**参数:**
1178
1179| 参数名 | 类型 | 必填 | 说明  |
1180| ------ | -------- | ---- | ---- |
1181| name   | string   | 是   | 注册对象的名称,可在网页侧JavaScript中通过此名称调用应用侧JavaScript对象。 |
1182
1183**错误码:**
1184
1185以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1186
1187| 错误码ID | 错误信息                                                     |
1188| -------- | ------------------------------------------------------------ |
1189| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
1190| 17100008 | Cannot delete JavaScriptProxy.                               |
1191
1192**示例:**
1193
1194```ts
1195// xxx.ets
1196import web_webview from '@ohos.web.webview'
1197
1198@Entry
1199@Component
1200struct WebComponent {
1201  controller: web_webview.WebviewController = new web_webview.WebviewController();
1202  @State name: string = 'Object';
1203
1204  build() {
1205    Column() {
1206      Button('deleteJavaScriptRegister')
1207        .onClick(() => {
1208          try {
1209            this.controller.deleteJavaScriptRegister(this.name);
1210          } catch (error) {
1211            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
1212          }
1213        })
1214      Web({ src: 'www.example.com', controller: this.controller })
1215    }
1216  }
1217}
1218```
1219
1220### zoom
1221
1222zoom(factor: number): void
1223
1224调整当前网页的缩放比例。
1225
1226**系统能力:** SystemCapability.Web.Webview.Core
1227
1228**参数:**
1229
1230| 参数名 | 类型 | 必填 | 说明 |
1231| ------ | -------- | ---- | ------------------------------------------------------------ |
1232| factor | number   | 是   | 基于当前网页所需调整的相对缩放比例,正值为放大,负值为缩小。 |
1233
1234**错误码:**
1235
1236以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1237
1238| 错误码ID | 错误信息                                                     |
1239| -------- | ------------------------------------------------------------ |
1240| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
1241| 17100004 | Function not enable.                                         |
1242
1243**示例:**
1244
1245```ts
1246// xxx.ets
1247import web_webview from '@ohos.web.webview'
1248
1249@Entry
1250@Component
1251struct WebComponent {
1252  controller: web_webview.WebviewController = new web_webview.WebviewController();
1253  @State factor: number = 1;
1254
1255  build() {
1256    Column() {
1257      Button('zoom')
1258        .onClick(() => {
1259          try {
1260            this.controller.zoom(this.factor);
1261          } catch (error) {
1262            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
1263          }
1264        })
1265      Web({ src: 'www.example.com', controller: this.controller })
1266    }
1267  }
1268}
1269```
1270
1271### searchAllAsync
1272
1273searchAllAsync(searchString: string): void
1274
1275异步查找网页中所有匹配关键字'searchString'的内容并高亮,结果通过[onSearchResultReceive](../arkui-ts/ts-basic-components-web.md#onsearchresultreceive9)异步返回。
1276
1277**系统能力:** SystemCapability.Web.Webview.Core
1278
1279**参数:**
1280
1281| 参数名       | 类型 | 必填 | 说明       |
1282| ------------ | -------- | ---- | -------------- |
1283| searchString | string   | 是   | 查找的关键字。 |
1284
1285**错误码:**
1286
1287以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1288
1289| 错误码ID | 错误信息                                                     |
1290| -------- | ------------------------------------------------------------ |
1291| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
1292
1293**示例:**
1294
1295```ts
1296// xxx.ets
1297import web_webview from '@ohos.web.webview'
1298
1299@Entry
1300@Component
1301struct WebComponent {
1302  controller: web_webview.WebviewController = new web_webview.WebviewController();
1303  @State searchString: string = "xxx";
1304
1305  build() {
1306    Column() {
1307      Button('searchString')
1308        .onClick(() => {
1309          try {
1310            this.controller.searchAllAsync(this.searchString);
1311          } catch (error) {
1312            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
1313          }
1314        })
1315      Web({ src: 'www.example.com', controller: this.controller })
1316        .onSearchResultReceive(ret => {
1317          console.log("on search result receive:" + "[cur]" + ret.activeMatchOrdinal +
1318          "[total]" + ret.numberOfMatches + "[isDone]" + ret.isDoneCounting);
1319        })
1320    }
1321  }
1322}
1323```
1324
1325### clearMatches
1326
1327clearMatches(): void
1328
1329清除所有通过[searchAllAsync](#searchallasync)匹配到的高亮字符查找结果。
1330
1331**系统能力:** SystemCapability.Web.Webview.Core
1332
1333**错误码:**
1334
1335以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1336
1337| 错误码ID | 错误信息                                                     |
1338| -------- | ------------------------------------------------------------ |
1339| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
1340
1341**示例:**
1342
1343```ts
1344// xxx.ets
1345import web_webview from '@ohos.web.webview'
1346
1347@Entry
1348@Component
1349struct WebComponent {
1350  controller: web_webview.WebviewController = new web_webview.WebviewController();
1351
1352  build() {
1353    Column() {
1354      Button('clearMatches')
1355        .onClick(() => {
1356          try {
1357            this.controller.clearMatches();
1358          } catch (error) {
1359            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
1360          }
1361        })
1362      Web({ src: 'www.example.com', controller: this.controller })
1363    }
1364  }
1365}
1366```
1367
1368### searchNext
1369
1370searchNext(forward: boolean): void
1371
1372滚动到下一个匹配的查找结果并高亮。
1373
1374**系统能力:** SystemCapability.Web.Webview.Core
1375
1376**参数:**
1377
1378| 参数名  | 类型 | 必填 | 说明               |
1379| ------- | -------- | ---- | ---------------------- |
1380| forward | boolean  | 是   | 从前向后或者逆向查找。 |
1381
1382**错误码:**
1383
1384以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1385
1386| 错误码ID | 错误信息                                                     |
1387| -------- | ------------------------------------------------------------ |
1388| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
1389
1390**示例:**
1391
1392```ts
1393// xxx.ets
1394import web_webview from '@ohos.web.webview'
1395
1396@Entry
1397@Component
1398struct WebComponent {
1399  controller: web_webview.WebviewController = new web_webview.WebviewController();
1400
1401  build() {
1402    Column() {
1403      Button('searchNext')
1404        .onClick(() => {
1405          try {
1406            this.controller.searchNext(true);
1407          } catch (error) {
1408            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
1409          }
1410        })
1411      Web({ src: 'www.example.com', controller: this.controller })
1412    }
1413  }
1414}
1415```
1416
1417### clearSslCache
1418
1419clearSslCache(): void
1420
1421清除Web组件记录的SSL证书错误事件对应的用户操作行为。
1422
1423**系统能力:** SystemCapability.Web.Webview.Core
1424
1425**错误码:**
1426
1427以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1428
1429| 错误码ID | 错误信息                                                     |
1430| -------- | ------------------------------------------------------------ |
1431| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
1432
1433**示例:**
1434
1435```ts
1436// xxx.ets
1437import web_webview from '@ohos.web.webview'
1438
1439@Entry
1440@Component
1441struct WebComponent {
1442  controller: web_webview.WebviewController = new web_webview.WebviewController();
1443
1444  build() {
1445    Column() {
1446      Button('clearSslCache')
1447        .onClick(() => {
1448          try {
1449            this.controller.clearSslCache();
1450          } catch (error) {
1451            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
1452          }
1453        })
1454      Web({ src: 'www.example.com', controller: this.controller })
1455    }
1456  }
1457}
1458```
1459
1460### clearClientAuthenticationCache
1461
1462clearClientAuthenticationCache(): void
1463
1464清除Web组件记录的客户端证书请求事件对应的用户操作行为。
1465
1466**系统能力:** SystemCapability.Web.Webview.Core
1467
1468**错误码:**
1469
1470以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1471
1472| 错误码ID | 错误信息                                                     |
1473| -------- | ------------------------------------------------------------ |
1474| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
1475
1476**示例:**
1477
1478```ts
1479// xxx.ets
1480import web_webview from '@ohos.web.webview'
1481
1482@Entry
1483@Component
1484struct WebComponent {
1485  controller: web_webview.WebviewController = new web_webview.WebviewController();
1486
1487  build() {
1488    Column() {
1489      Button('clearClientAuthenticationCache')
1490        .onClick(() => {
1491          try {
1492            this.controller.clearClientAuthenticationCache();
1493          } catch (error) {
1494            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
1495          }
1496        })
1497      Web({ src: 'www.example.com', controller: this.controller })
1498    }
1499  }
1500}
1501```
1502
1503### createWebMessagePorts
1504
1505 createWebMessagePorts(): Array\<WebMessagePort>
1506
1507创建Web消息端口。
1508
1509**系统能力:** SystemCapability.Web.Webview.Core
1510
1511**返回值:**
1512
1513| 类型                   | 说明              |
1514| ---------------------- | ----------------- |
1515| Array\<WebMessagePort> | web消息端口列表。 |
1516
1517**错误码:**
1518
1519以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1520
1521| 错误码ID | 错误信息                                                     |
1522| -------- | ------------------------------------------------------------ |
1523| 17100001 | Init error. The WebviewController must be associated with a Web component. |
1524
1525**示例:**
1526
1527  ```ts
1528// xxx.ets
1529import web_webview from '@ohos.web.webview'
1530
1531@Entry
1532@Component
1533struct WebComponent {
1534  controller: web_webview.WebviewController = new web_webview.WebviewController();
1535  ports: web_webview.WebMessagePort[];
1536
1537  build() {
1538    Column() {
1539      Button('createWebMessagePorts')
1540        .onClick(() => {
1541          try {
1542            this.ports = this.controller.createWebMessagePorts();
1543            console.log("createWebMessagePorts size:" + this.ports.length)
1544          } catch (error) {
1545            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
1546          }
1547        })
1548      Web({ src: 'www.example.com', controller: this.controller })
1549    }
1550  }
1551}
1552  ```
1553
1554### postMessage
1555
1556postMessage(name: string, ports: Array\<WebMessagePort>, uri: string): void
1557
1558发送Web消息端口到HTML5。
1559
1560**系统能力:** SystemCapability.Web.Webview.Core
1561
1562**参数:**
1563
1564| 参数名 | 类型                   | 必填 | 说明                             |
1565| ------ | ---------------------- | ---- | :------------------------------- |
1566| name   | string                 | 是   | 要发送的消息,包含数据和消息端口。 |
1567| ports  | Array\<WebMessagePort> | 是   | 接收该消息的URI。                |
1568| uri    | string                 | 是   | 接收该消息的URI。                |
1569
1570**错误码:**
1571
1572以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1573
1574| 错误码ID | 错误信息                                                     |
1575| -------- | ------------------------------------------------------------ |
1576| 17100001 | Init error. The WebviewController must be associated with a Web component. |
1577
1578**示例:**
1579
1580```ts
1581// xxx.ets
1582import web_webview from '@ohos.web.webview';
1583
1584@Entry
1585@Component
1586struct WebComponent {
1587  controller: web_webview.WebviewController = new web_webview.WebviewController();
1588  ports: web_webview.WebMessagePort[];
1589  @State sendFromEts: string = 'Send this message from ets to HTML';
1590  @State receivedFromHtml: string = 'Display received message send from HTML';
1591
1592  build() {
1593    Column() {
1594      // 展示接收到的来自HTML的内容
1595      Text(this.receivedFromHtml)
1596      // 输入框的内容发送到html
1597      TextInput({placeholder: 'Send this message from ets to HTML'})
1598        .onChange((value: string) => {
1599          this.sendFromEts = value;
1600      })
1601
1602      Button('postMessage')
1603        .onClick(() => {
1604          try {
1605            // 1、创建两个消息端口。
1606            this.ports = this.controller.createWebMessagePorts();
1607            // 2、在应用侧的消息端口(如端口1)上注册回调事件。
1608            this.ports[1].onMessageEvent((result: web_webview.WebMessage) => {
1609              let msg = 'Got msg from HTML:';
1610              if (typeof(result) == "string") {
1611                console.log("received string message from html5, string is:" + result);
1612                msg = msg + result;
1613              } else if (typeof(result) == "object") {
1614                if (result instanceof ArrayBuffer) {
1615                  console.log("received arraybuffer from html5, length is:" + result.byteLength);
1616                  msg = msg + "lenght is " + result.byteLength;
1617                } else {
1618                  console.log("not support");
1619                }
1620              } else {
1621                console.log("not support");
1622              }
1623              this.receivedFromHtml = msg;
1624            })
1625            // 3、将另一个消息端口(如端口0)发送到HTML侧,由HTML侧保存并使用。
1626            this.controller.postMessage('__init_port__', [this.ports[0]], '*');
1627          } catch (error) {
1628            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
1629          }
1630        })
1631
1632      // 4、使用应用侧的端口给另一个已经发送到html的端口发送消息。
1633      Button('SendDataToHTML')
1634        .onClick(() => {
1635          try {
1636            if (this.ports && this.ports[1]) {
1637              this.ports[1].postMessageEvent(this.sendFromEts);
1638            } else {
1639              console.error(`ports is null, Please initialize first`);
1640            }
1641          } catch (error) {
1642            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
1643          }
1644        })
1645      Web({ src: $rawfile('xxx.html'), controller: this.controller })
1646    }
1647  }
1648}
1649```
1650
1651```html
1652<!--xxx.html-->
1653<!DOCTYPE html>
1654<html>
1655<head>
1656    <meta name="viewport" content="width=device-width, initial-scale=1.0">
1657    <title>WebView Message Port Demo</title>
1658</head>
1659
1660  <body>
1661    <h1>WebView Message Port Demo</h1>
1662    <div>
1663        <input type="button" value="SendToEts" onclick="PostMsgToEts(msgFromJS.value);"/><br/>
1664        <input id="msgFromJS" type="text" value="send this message from HTML to ets"/><br/>
1665    </div>
1666    <p class="output">display received message send from ets</p>
1667  </body>
1668  <script src="xxx.js"></script>
1669</html>
1670```
1671
1672```js
1673//xxx.js
1674var h5Port;
1675var output = document.querySelector('.output');
1676window.addEventListener('message', function (event) {
1677    if (event.data == '__init_port__') {
1678        if (event.ports[0] != null) {
1679            h5Port = event.ports[0]; // 1. 保存从ets侧发送过来的端口
1680            h5Port.onmessage = function (event) {
1681              // 2. 接收ets侧发送过来的消息.
1682              var msg = 'Got message from ets:';
1683              var result = event.data;
1684              if (typeof(result) == "string") {
1685                console.log("received string message from html5, string is:" + result);
1686                msg = msg + result;
1687              } else if (typeof(result) == "object") {
1688                if (result instanceof ArrayBuffer) {
1689                  console.log("received arraybuffer from html5, length is:" + result.byteLength);
1690                  msg = msg + "lenght is " + result.byteLength;
1691                } else {
1692                  console.log("not support");
1693                }
1694              } else {
1695                console.log("not support");
1696              }
1697              output.innerHTML = msg;
1698            }
1699        }
1700    }
1701})
1702
1703// 3. 使用h5Port往ets侧发送消息.
1704function PostMsgToEts(data) {
1705    if (h5Port) {
1706      h5Port.postMessage(data);
1707    } else {
1708      console.error("h5Port is null, Please initialize first");
1709    }
1710}
1711```
1712
1713### requestFocus
1714
1715requestFocus(): void
1716
1717使当前web页面获取焦点。
1718
1719**系统能力:** SystemCapability.Web.Webview.Core
1720
1721**错误码:**
1722
1723以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1724
1725| 错误码ID | 错误信息                                                     |
1726| -------- | ------------------------------------------------------------ |
1727| 17100001 | Init error. The WebviewController must be associated with a Web component. |
1728
1729**示例:**
1730
1731```ts
1732// xxx.ets
1733import web_webview from '@ohos.web.webview';
1734
1735@Entry
1736@Component
1737struct WebComponent {
1738  controller: web_webview.WebviewController = new web_webview.WebviewController();
1739
1740  build() {
1741    Column() {
1742      Button('requestFocus')
1743        .onClick(() => {
1744          try {
1745            this.controller.requestFocus();
1746          } catch (error) {
1747            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
1748          }
1749        });
1750      Web({ src: 'www.example.com', controller: this.controller })
1751    }
1752  }
1753}
1754```
1755
1756### zoomIn
1757
1758zoomIn(): void
1759
1760调用此接口将当前网页进行放大,比例为20%。
1761
1762**系统能力:** SystemCapability.Web.Webview.Core
1763
1764**错误码:**
1765
1766以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1767
1768| 错误码ID | 错误信息                                                     |
1769| -------- | ------------------------------------------------------------ |
1770| 17100001 | Init error. The WebviewController must be associated with a Web component. |
1771| 17100004 | Function not enable.                                         |
1772
1773**示例:**
1774
1775```ts
1776// xxx.ets
1777import web_webview from '@ohos.web.webview';
1778
1779@Entry
1780@Component
1781struct WebComponent {
1782  controller: web_webview.WebviewController = new web_webview.WebviewController();
1783
1784  build() {
1785    Column() {
1786      Button('zoomIn')
1787        .onClick(() => {
1788          try {
1789            this.controller.zoomIn();
1790          } catch (error) {
1791            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
1792          }
1793        })
1794      Web({ src: 'www.example.com', controller: this.controller })
1795    }
1796  }
1797}
1798```
1799
1800### zoomOut
1801
1802zoomOut(): void
1803
1804调用此接口将当前网页进行缩小,比例为20%。
1805
1806**系统能力:** SystemCapability.Web.Webview.Core
1807
1808**错误码:**
1809
1810以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1811
1812| 错误码ID | 错误信息                                                     |
1813| -------- | ------------------------------------------------------------ |
1814| 17100001 | Init error. The WebviewController must be associated with a Web component. |
1815| 17100004 | Function not enable.                                         |
1816
1817**示例:**
1818
1819```ts
1820// xxx.ets
1821import web_webview from '@ohos.web.webview';
1822
1823@Entry
1824@Component
1825struct WebComponent {
1826  controller: web_webview.WebviewController = new web_webview.WebviewController();
1827
1828  build() {
1829    Column() {
1830      Button('zoomOut')
1831        .onClick(() => {
1832          try {
1833            this.controller.zoomOut();
1834          } catch (error) {
1835            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
1836          }
1837        })
1838      Web({ src: 'www.example.com', controller: this.controller })
1839    }
1840  }
1841}
1842```
1843
1844### getHitTestValue
1845
1846getHitTestValue(): HitTestValue
1847
1848获取当前被点击区域的元素信息。
1849
1850**系统能力:** SystemCapability.Web.Webview.Core
1851
1852**返回值:**
1853
1854| 类型         | 说明                 |
1855| ------------ | -------------------- |
1856| [HitTestValue](#hittestvalue) | 点击区域的元素信息。 |
1857
1858**错误码:**
1859
1860以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1861
1862| 错误码ID | 错误信息                                                     |
1863| -------- | ------------------------------------------------------------ |
1864| 17100001 | Init error. The WebviewController must be associated with a Web component. |
1865
1866**示例:**
1867
1868```ts
1869// xxx.ets
1870import web_webview from '@ohos.web.webview';
1871
1872@Entry
1873@Component
1874struct WebComponent {
1875  controller: web_webview.WebviewController = new web_webview.WebviewController();
1876
1877  build() {
1878    Column() {
1879      Button('getHitTestValue')
1880        .onClick(() => {
1881          try {
1882            let hitValue = this.controller.getHitTestValue();
1883            console.log("hitType: " + hitValue.type);
1884            console.log("extra: " + hitValue.extra);
1885          } catch (error) {
1886            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
1887          }
1888        })
1889      Web({ src: 'www.example.com', controller: this.controller })
1890    }
1891  }
1892}
1893```
1894
1895### getWebId
1896
1897getWebId(): number
1898
1899获取当前Web组件的索引值,用于多个Web组件的管理。
1900
1901**系统能力:** SystemCapability.Web.Webview.Core
1902
1903**返回值:**
1904
1905| 类型   | 说明                  |
1906| ------ | --------------------- |
1907| number | 当前Web组件的索引值。 |
1908
1909**错误码:**
1910
1911以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1912
1913| 错误码ID | 错误信息                                                     |
1914| -------- | ------------------------------------------------------------ |
1915| 17100001 | Init error. The WebviewController must be associated with a Web component. |
1916
1917**示例:**
1918
1919```ts
1920// xxx.ets
1921import web_webview from '@ohos.web.webview';
1922
1923@Entry
1924@Component
1925struct WebComponent {
1926  controller: web_webview.WebviewController = new web_webview.WebviewController();
1927
1928  build() {
1929    Column() {
1930      Button('getWebId')
1931        .onClick(() => {
1932          try {
1933            let id = this.controller.getWebId();
1934            console.log("id: " + id);
1935          } catch (error) {
1936            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
1937          }
1938        })
1939      Web({ src: 'www.example.com', controller: this.controller })
1940    }
1941  }
1942}
1943```
1944
1945### getUserAgent
1946
1947getUserAgent(): string
1948
1949获取当前默认用户代理。
1950
1951**系统能力:** SystemCapability.Web.Webview.Core
1952
1953**返回值:**
1954
1955| 类型   | 说明           |
1956| ------ | -------------- |
1957| string | 默认用户代理。 |
1958
1959**错误码:**
1960
1961以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
1962
1963| 错误码ID | 错误信息                                                     |
1964| -------- | ------------------------------------------------------------ |
1965| 17100001 | Init error. The WebviewController must be associated with a Web component. |
1966
1967**示例:**
1968
1969```ts
1970// xxx.ets
1971import web_webview from '@ohos.web.webview';
1972
1973@Entry
1974@Component
1975struct WebComponent {
1976  controller: web_webview.WebviewController = new web_webview.WebviewController();
1977
1978  build() {
1979    Column() {
1980      Button('getUserAgent')
1981        .onClick(() => {
1982          try {
1983            let userAgent = this.controller.getUserAgent();
1984            console.log("userAgent: " + userAgent);
1985          } catch (error) {
1986            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
1987          }
1988        })
1989      Web({ src: 'www.example.com', controller: this.controller })
1990    }
1991  }
1992}
1993```
1994
1995支持开发者基于默认的UserAgent去定制UserAgent。
1996```ts
1997// xxx.ets
1998import web_webview from '@ohos.web.webview';
1999
2000@Entry
2001@Component
2002struct WebComponent {
2003  controller: web_webview.WebviewController = new web_webview.WebviewController();
2004  @State ua: string = ""
2005
2006  aboutToAppear():void {
2007    web_webview.once('webInited', () => {
2008      try {
2009        // 应用侧用法示例,定制UserAgent。
2010        this.ua = this.controller.getUserAgent() + 'xxx';
2011      } catch(error) {
2012        console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2013      }
2014    })
2015  }
2016
2017  build() {
2018    Column() {
2019      Web({ src: 'www.example.com', controller: this.controller })
2020        .userAgent(this.ua)
2021    }
2022  }
2023}
2024```
2025
2026### getTitle
2027
2028getTitle(): string
2029
2030获取当前网页的标题。
2031
2032**系统能力:** SystemCapability.Web.Webview.Core
2033
2034**返回值:**
2035
2036| 类型   | 说明                 |
2037| ------ | -------------------- |
2038| string | 当前网页的标题。 |
2039
2040**错误码:**
2041
2042以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2043
2044| 错误码ID | 错误信息                                                     |
2045| -------- | ------------------------------------------------------------ |
2046| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2047
2048**示例:**
2049
2050```ts
2051// xxx.ets
2052import web_webview from '@ohos.web.webview';
2053
2054@Entry
2055@Component
2056struct WebComponent {
2057  controller: web_webview.WebviewController = new web_webview.WebviewController();
2058
2059  build() {
2060    Column() {
2061      Button('getTitle')
2062        .onClick(() => {
2063          try {
2064            let title = this.controller.getTitle();
2065            console.log("title: " + title);
2066          } catch (error) {
2067            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2068          }
2069        })
2070      Web({ src: 'www.example.com', controller: this.controller })
2071    }
2072  }
2073}
2074```
2075
2076### getPageHeight
2077
2078getPageHeight(): number
2079
2080获取当前网页的页面高度。
2081
2082**系统能力:** SystemCapability.Web.Webview.Core
2083
2084**返回值:**
2085
2086| 类型   | 说明                 |
2087| ------ | -------------------- |
2088| number | 当前网页的页面高度。 |
2089
2090**错误码:**
2091
2092以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2093
2094| 错误码ID | 错误信息                                                     |
2095| -------- | ------------------------------------------------------------ |
2096| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2097
2098**示例:**
2099
2100```ts
2101// xxx.ets
2102import web_webview from '@ohos.web.webview';
2103
2104@Entry
2105@Component
2106struct WebComponent {
2107  controller: web_webview.WebviewController = new web_webview.WebviewController();
2108
2109  build() {
2110    Column() {
2111      Button('getPageHeight')
2112        .onClick(() => {
2113          try {
2114            let pageHeight = this.controller.getPageHeight();
2115            console.log("pageHeight : " + pageHeight);
2116          } catch (error) {
2117            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2118          }
2119        })
2120      Web({ src: 'www.example.com', controller: this.controller })
2121    }
2122  }
2123}
2124```
2125
2126### storeWebArchive
2127
2128storeWebArchive(baseName: string, autoName: boolean, callback: AsyncCallback\<string>): void
2129
2130以回调方式异步保存当前页面。
2131
2132**系统能力:** SystemCapability.Web.Webview.Core
2133
2134**参数:**
2135
2136| 参数名   | 类型              | 必填 | 说明                                                         |
2137| -------- | --------------------- | ---- | ------------------------------------------------------------ |
2138| baseName | string                | 是   | 文件存储路径,该值不能为空。                                 |
2139| autoName | boolean               | 是   | 决定是否自动生成文件名。 如果为false,则将baseName作为文件存储路径。 如果为true,则假定baseName是一个目录,将根据当前页的Url自动生成文件名。 |
2140| callback | AsyncCallback\<string> | 是   | 返回文件存储路径,保存网页失败会返回null。                   |
2141
2142**错误码:**
2143
2144以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2145
2146| 错误码ID | 错误信息                                                     |
2147| -------- | ------------------------------------------------------------ |
2148| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2149| 17100003 | Invalid resource path or file type.                          |
2150
2151**示例:**
2152
2153```ts
2154// xxx.ets
2155import web_webview from '@ohos.web.webview'
2156
2157@Entry
2158@Component
2159struct WebComponent {
2160  controller: web_webview.WebviewController = new web_webview.WebviewController();
2161
2162  build() {
2163    Column() {
2164      Button('storeWebArchive')
2165        .onClick(() => {
2166          try {
2167            this.controller.storeWebArchive("/data/storage/el2/base/", true, (error, filename) => {
2168              if (error) {
2169                console.info(`save web archive error: ` + JSON.stringify(error))
2170                return;
2171              }
2172              if (filename != null) {
2173                console.info(`save web archive success: ${filename}`)
2174              }
2175            });
2176          } catch (error) {
2177            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2178          }
2179        })
2180      Web({ src: 'www.example.com', controller: this.controller })
2181    }
2182  }
2183}
2184```
2185
2186### storeWebArchive
2187
2188storeWebArchive(baseName: string, autoName: boolean): Promise\<string>
2189
2190以Promise方式异步保存当前页面。
2191
2192**系统能力:** SystemCapability.Web.Webview.Core
2193
2194**参数:**
2195
2196| 参数名   | 类型 | 必填 | 说明                                                         |
2197| -------- | -------- | ---- | ------------------------------------------------------------ |
2198| baseName | string   | 是   | 文件存储路径,该值不能为空。                                 |
2199| autoName | boolean  | 是   | 决定是否自动生成文件名。 如果为false,则将baseName作为文件存储路径。 如果为true,则假定baseName是一个目录,将根据当前页的Url自动生成文件名。 |
2200
2201**返回值:**
2202
2203| 类型            | 说明                                                  |
2204| --------------- | ----------------------------------------------------- |
2205| Promise\<string> | Promise实例,保存成功返回文件路径,保存失败返回null。 |
2206
2207**错误码:**
2208
2209以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2210
2211| 错误码ID | 错误信息                                                     |
2212| -------- | ------------------------------------------------------------ |
2213| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2214| 17100003 | Invalid resource path or file type.                          |
2215
2216**示例:**
2217
2218```ts
2219// xxx.ets
2220import web_webview from '@ohos.web.webview'
2221
2222@Entry
2223@Component
2224struct WebComponent {
2225  controller: web_webview.WebviewController = new web_webview.WebviewController();
2226
2227  build() {
2228    Column() {
2229      Button('storeWebArchive')
2230        .onClick(() => {
2231          try {
2232            this.controller.storeWebArchive("/data/storage/el2/base/", true)
2233              .then(filename => {
2234                if (filename != null) {
2235                  console.info(`save web archive success: ${filename}`)
2236                }
2237              })
2238              .catch(error => {
2239                console.log('error: ' + JSON.stringify(error));
2240              })
2241          } catch (error) {
2242            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2243          }
2244        })
2245      Web({ src: 'www.example.com', controller: this.controller })
2246    }
2247  }
2248}
2249```
2250
2251### getUrl
2252
2253getUrl(): string
2254
2255获取当前页面的url地址。
2256
2257**系统能力:** SystemCapability.Web.Webview.Core
2258
2259**返回值:**
2260
2261| 类型   | 说明                |
2262| ------ | ------------------- |
2263| string | 当前页面的url地址。 |
2264
2265**错误码:**
2266
2267以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2268
2269| 错误码ID | 错误信息                                                     |
2270| -------- | ------------------------------------------------------------ |
2271| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2272
2273**示例:**
2274
2275```ts
2276// xxx.ets
2277import web_webview from '@ohos.web.webview';
2278
2279@Entry
2280@Component
2281struct WebComponent {
2282  controller: web_webview.WebviewController = new web_webview.WebviewController();
2283
2284  build() {
2285    Column() {
2286      Button('getUrl')
2287        .onClick(() => {
2288          try {
2289            let url = this.controller.getUrl();
2290            console.log("url: " + url);
2291          } catch (error) {
2292            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2293          }
2294        })
2295      Web({ src: 'www.example.com', controller: this.controller })
2296    }
2297  }
2298}
2299```
2300
2301### stop
2302
2303stop(): void
2304
2305停止页面加载。
2306
2307**系统能力:** SystemCapability.Web.Webview.Core
2308
2309**错误码:**
2310
2311以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2312
2313| 错误码ID | 错误信息                                                     |
2314| -------- | ------------------------------------------------------------ |
2315| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2316
2317**示例:**
2318
2319```ts
2320// xxx.ets
2321import web_webview from '@ohos.web.webview';
2322
2323@Entry
2324@Component
2325struct WebComponent {
2326  controller: web_webview.WebviewController = new web_webview.WebviewController();
2327
2328  build() {
2329    Column() {
2330      Button('stop')
2331        .onClick(() => {
2332          try {
2333            this.controller.stop();
2334          } catch (error) {
2335            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2336          }
2337        });
2338      Web({ src: 'www.example.com', controller: this.controller })
2339    }
2340  }
2341}
2342```
2343
2344### backOrForward
2345
2346backOrForward(step: number): void
2347
2348按照历史栈,前进或者后退指定步长的页面,当历史栈中不存在对应步长的页面时,不会进行页面跳转。
2349
2350前进或者后退页面时,直接使用已加载过的网页,无需重新加载网页。
2351
2352**系统能力:** SystemCapability.Web.Webview.Core
2353
2354**参数:**
2355
2356| 参数名 | 类型 | 必填 | 说明               |
2357| ------ | -------- | ---- | ---------------------- |
2358| step   | number   | 是   | 需要前进或后退的步长。 |
2359
2360**错误码:**
2361
2362以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2363
2364| 错误码ID | 错误信息                                                     |
2365| -------- | ------------------------------------------------------------ |
2366| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2367
2368**示例:**
2369
2370```ts
2371// xxx.ets
2372import web_webview from '@ohos.web.webview';
2373
2374@Entry
2375@Component
2376struct WebComponent {
2377  controller: web_webview.WebviewController = new web_webview.WebviewController();
2378  @State step: number = -2;
2379
2380  build() {
2381    Column() {
2382      Button('backOrForward')
2383        .onClick(() => {
2384          try {
2385            this.controller.backOrForward(this.step);
2386          } catch (error) {
2387            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2388          }
2389        })
2390      Web({ src: 'www.example.com', controller: this.controller })
2391    }
2392  }
2393}
2394```
2395
2396### scrollTo
2397
2398scrollTo(x:number, y:number): void
2399
2400将页面滚动到指定的绝对位置。
2401
2402**系统能力:** SystemCapability.Web.Webview.Core
2403
2404**参数:**
2405
2406| 参数名 | 类型 | 必填 | 说明               |
2407| ------ | -------- | ---- | ---------------------- |
2408| x   | number   | 是   | 绝对位置的水平坐标,当传入数值为负数时,按照传入0处理。 |
2409| y   | number   | 是   | 绝对位置的垂直坐标,当传入数值为负数时,按照传入0处理。|
2410
2411**错误码:**
2412
2413以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2414
2415| 错误码ID | 错误信息                                                     |
2416| -------- | ------------------------------------------------------------ |
2417| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2418
2419**示例:**
2420
2421```ts
2422// xxx.ets
2423import web_webview from '@ohos.web.webview';
2424
2425@Entry
2426@Component
2427struct WebComponent {
2428  controller: web_webview.WebviewController = new web_webview.WebviewController();
2429
2430  build() {
2431    Column() {
2432      Button('scrollTo')
2433        .onClick(() => {
2434          try {
2435            this.controller.scrollTo(50, 50);
2436          } catch (error) {
2437            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2438          }
2439        })
2440      Web({ src: 'www.example.com', controller: this.controller })
2441    }
2442  }
2443}
2444```
2445
2446```html
2447<!--xxx.html-->
2448<!DOCTYPE html>
2449<html>
2450<head>
2451    <title>Demo</title>
2452    <style>
2453        body {
2454            width:3000px;
2455            height:3000px;
2456            padding-right:170px;
2457            padding-left:170px;
2458            border:5px solid blueviolet
2459        }
2460    </style>
2461</head>
2462<body>
2463Scroll Test
2464</body>
2465</html>
2466```
2467
2468### scrollBy
2469
2470scrollBy(deltaX:number, deltaY:number): void
2471
2472将页面滚动指定的偏移量。
2473
2474**系统能力:** SystemCapability.Web.Webview.Core
2475
2476**参数:**
2477
2478| 参数名 | 类型 | 必填 | 说明               |
2479| ------ | -------- | ---- | ---------------------- |
2480| deltaX | number   | 是   | 水平偏移量,其中水平向右为正方向。 |
2481| deltaY | number   | 是   | 垂直偏移量,其中垂直向下为正方向。 |
2482
2483**错误码:**
2484
2485以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2486
2487| 错误码ID | 错误信息                                                     |
2488| -------- | ------------------------------------------------------------ |
2489| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2490
2491**示例:**
2492
2493```ts
2494// xxx.ets
2495import web_webview from '@ohos.web.webview';
2496
2497@Entry
2498@Component
2499struct WebComponent {
2500  controller: web_webview.WebviewController = new web_webview.WebviewController();
2501
2502  build() {
2503    Column() {
2504      Button('scrollBy')
2505        .onClick(() => {
2506          try {
2507            this.controller.scrollBy(50, 50);
2508          } catch (error) {
2509            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2510          }
2511        })
2512      Web({ src: 'www.example.com', controller: this.controller })
2513    }
2514  }
2515}
2516```
2517
2518```html
2519<!--xxx.html-->
2520<!DOCTYPE html>
2521<html>
2522<head>
2523    <title>Demo</title>
2524    <style>
2525        body {
2526            width:3000px;
2527            height:3000px;
2528            padding-right:170px;
2529            padding-left:170px;
2530            border:5px solid blueviolet
2531        }
2532    </style>
2533</head>
2534<body>
2535Scroll Test
2536</body>
2537</html>
2538```
2539
2540### slideScroll
2541
2542slideScroll(vx:number, vy:number): void
2543
2544按照指定速度模拟对页面的轻扫滚动动作。
2545
2546**系统能力:** SystemCapability.Web.Webview.Core
2547
2548**参数:**
2549
2550| 参数名 | 类型 | 必填 | 说明               |
2551| ------ | -------- | ---- | ---------------------- |
2552| vx     | number   | 是   | 轻扫滚动的水平速度分量,其中水平向右为速度正方向。 |
2553| vy     | number   | 是   | 轻扫滚动的垂直速度分量,其中垂直向下为速度正方向。 |
2554
2555**错误码:**
2556
2557以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2558
2559| 错误码ID | 错误信息                                                     |
2560| -------- | ------------------------------------------------------------ |
2561| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2562
2563**示例:**
2564
2565```ts
2566// xxx.ets
2567import web_webview from '@ohos.web.webview';
2568
2569@Entry
2570@Component
2571struct WebComponent {
2572  controller: web_webview.WebviewController = new web_webview.WebviewController();
2573
2574  build() {
2575    Column() {
2576      Button('slideScroll')
2577        .onClick(() => {
2578          try {
2579            this.controller.slideScroll(500, 500);
2580          } catch (error) {
2581            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2582          }
2583        })
2584      Web({ src: 'www.example.com', controller: this.controller })
2585    }
2586  }
2587}
2588```
2589
2590```html
2591<!--xxx.html-->
2592<!DOCTYPE html>
2593<html>
2594<head>
2595    <title>Demo</title>
2596    <style>
2597        body {
2598            width:3000px;
2599            height:3000px;
2600            padding-right:170px;
2601            padding-left:170px;
2602            border:5px solid blueviolet
2603        }
2604    </style>
2605</head>
2606<body>
2607Scroll Test
2608</body>
2609</html>
2610```
2611
2612### getOriginalUrl
2613
2614getOriginalUrl(): string
2615
2616获取当前页面的原始url地址。
2617
2618**系统能力:** SystemCapability.Web.Webview.Core
2619
2620**返回值:**
2621
2622| 类型   | 说明                    |
2623| ------ | ----------------------- |
2624| string | 当前页面的原始url地址。 |
2625
2626**错误码:**
2627
2628以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2629
2630| 错误码ID | 错误信息                                                     |
2631| -------- | ------------------------------------------------------------ |
2632| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2633
2634**示例:**
2635
2636```ts
2637// xxx.ets
2638import web_webview from '@ohos.web.webview';
2639
2640@Entry
2641@Component
2642struct WebComponent {
2643  controller: web_webview.WebviewController = new web_webview.WebviewController();
2644
2645  build() {
2646    Column() {
2647      Button('getOrgUrl')
2648        .onClick(() => {
2649          try {
2650            let url = this.controller.getOriginalUrl();
2651            console.log("original url: " + url);
2652          } catch (error) {
2653            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2654          }
2655        })
2656      Web({ src: 'www.example.com', controller: this.controller })
2657    }
2658  }
2659}
2660```
2661
2662### getFavicon
2663
2664getFavicon(): image.PixelMap
2665
2666获取页面的favicon图标。
2667
2668**系统能力:** SystemCapability.Web.Webview.Core
2669
2670**返回值:**
2671
2672| 类型                                   | 说明                            |
2673| -------------------------------------- | ------------------------------- |
2674| [PixelMap](js-apis-image.md#pixelmap7) | 页面favicon图标的PixelMap对象。 |
2675
2676**错误码:**
2677
2678以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2679
2680| 错误码ID | 错误信息                                                     |
2681| -------- | ------------------------------------------------------------ |
2682| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2683
2684**示例:**
2685
2686```ts
2687// xxx.ets
2688import web_webview from '@ohos.web.webview';
2689import image from "@ohos.multimedia.image"
2690@Entry
2691@Component
2692struct WebComponent {
2693  controller: web_webview.WebviewController = new web_webview.WebviewController();
2694  @State pixelmap: image.PixelMap = undefined;
2695
2696  build() {
2697    Column() {
2698      Button('getFavicon')
2699        .onClick(() => {
2700          try {
2701            this.pixelmap = this.controller.getFavicon();
2702          } catch (error) {
2703            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2704          }
2705        })
2706      Web({ src: 'www.example.com', controller: this.controller })
2707    }
2708  }
2709}
2710```
2711
2712### setNetworkAvailable
2713
2714setNetworkAvailable(enable: boolean): void
2715
2716设置JavaScript中的window.navigator.onLine属性。
2717
2718**系统能力:** SystemCapability.Web.Webview.Core
2719
2720**参数:**
2721
2722| 参数名 | 类型    | 必填 | 说明                              |
2723| ------ | ------- | ---- | --------------------------------- |
2724| enable | boolean | 是   | 是否使能window.navigator.onLine。 |
2725
2726**错误码:**
2727
2728以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2729
2730| 错误码ID | 错误信息                                                     |
2731| -------- | ------------------------------------------------------------ |
2732| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2733
2734**示例:**
2735
2736```ts
2737// xxx.ets
2738import web_webview from '@ohos.web.webview';
2739
2740@Entry
2741@Component
2742struct WebComponent {
2743  controller: web_webview.WebviewController = new web_webview.WebviewController();
2744
2745  build() {
2746    Column() {
2747      Button('setNetworkAvailable')
2748        .onClick(() => {
2749          try {
2750            this.controller.setNetworkAvailable(true);
2751          } catch (error) {
2752            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2753          }
2754        })
2755      Web({ src: 'www.example.com', controller: this.controller })
2756    }
2757  }
2758}
2759```
2760
2761### hasImage
2762
2763hasImage(callback: AsyncCallback\<boolean>): void
2764
2765通过Callback方式异步查找当前页面是否存在图像。
2766
2767**系统能力:** SystemCapability.Web.Webview.Core
2768
2769**参数:**
2770
2771| 参数名   | 类型                    | 必填 | 说明                       |
2772| -------- | ----------------------- | ---- | -------------------------- |
2773| callback | AsyncCallback\<boolean> | 是   | 返回查找页面是否存在图像。 |
2774
2775**错误码:**
2776
2777以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2778
2779| 错误码ID | 错误信息                                                     |
2780| -------- | ------------------------------------------------------------ |
2781| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
2782
2783**示例:**
2784
2785```ts
2786// xxx.ets
2787import web_webview from '@ohos.web.webview';
2788
2789@Entry
2790@Component
2791struct WebComponent {
2792  controller: web_webview.WebviewController = new web_webview.WebviewController();
2793
2794  build() {
2795    Column() {
2796      Button('hasImageCb')
2797        .onClick(() => {
2798          try {
2799            this.controller.hasImage((error, data) => {
2800              if (error) {
2801                console.info(`hasImage error: ` + JSON.stringify(error))
2802                return;
2803              }
2804              console.info("hasImage: " + data);
2805            });
2806          } catch (error) {
2807            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2808          }
2809        })
2810      Web({ src: 'www.example.com', controller: this.controller })
2811    }
2812  }
2813}
2814```
2815
2816### hasImage
2817
2818hasImage(): Promise\<boolean>
2819
2820通过Promise方式异步查找当前页面是否存在图像。
2821
2822**系统能力:** SystemCapability.Web.Webview.Core
2823
2824**返回值:**
2825
2826| 类型              | 说明                                    |
2827| ----------------- | --------------------------------------- |
2828| Promise\<boolean> | Promise实例,返回查找页面是否存在图像。 |
2829
2830**错误码:**
2831
2832以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2833
2834| 错误码ID | 错误信息                                                     |
2835| -------- | ------------------------------------------------------------ |
2836| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
2837
2838**示例:**
2839
2840```ts
2841// xxx.ets
2842import web_webview from '@ohos.web.webview';
2843
2844@Entry
2845@Component
2846struct WebComponent {
2847  controller: web_webview.WebviewController = new web_webview.WebviewController();
2848
2849  build() {
2850    Column() {
2851      Button('hasImagePm')
2852        .onClick(() => {
2853          try {
2854            this.controller.hasImage().then((data) => {
2855              console.info('hasImage: ' + data);
2856            })
2857            .catch(function (error) {
2858              console.error("error: " + error);
2859            })
2860          } catch (error) {
2861            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
2862          }
2863        })
2864      Web({ src: 'www.example.com', controller: this.controller })
2865    }
2866  }
2867}
2868```
2869
2870### removeCache
2871
2872removeCache(clearRom: boolean): void
2873
2874清除应用中的资源缓存文件,此方法将会清除同一应用中所有webview的缓存文件。
2875
2876**系统能力:** SystemCapability.Web.Webview.Core
2877
2878**参数:**
2879
2880| 参数名   | 类型    | 必填 | 说明                                                     |
2881| -------- | ------- | ---- | -------------------------------------------------------- |
2882| clearRom | boolean | 是   | 设置为true时同时清除rom和ram中的缓存,设置为false时只清除ram中的缓存。 |
2883
2884**错误码:**
2885
2886以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2887
2888| 错误码ID | 错误信息                                                     |
2889| -------- | ------------------------------------------------------------ |
2890| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2891
2892**示例:**
2893
2894```ts
2895// xxx.ets
2896import web_webview from '@ohos.web.webview';
2897
2898@Entry
2899@Component
2900struct WebComponent {
2901  controller: web_webview.WebviewController = new web_webview.WebviewController();
2902
2903  build() {
2904    Column() {
2905      Button('removeCache')
2906        .onClick(() => {
2907          try {
2908            this.controller.removeCache(false);
2909          } catch (error) {
2910            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2911          }
2912        })
2913      Web({ src: 'www.example.com', controller: this.controller })
2914    }
2915  }
2916}
2917```
2918
2919### pageUp
2920
2921pageUp(top:boolean): void
2922
2923将Webview的内容向上滚动半个视框大小或者跳转到页面最顶部,通过top入参控制。
2924
2925**系统能力:** SystemCapability.Web.Webview.Core
2926
2927**参数:**
2928
2929| 参数名 | 类型    | 必填 | 说明                                                         |
2930| ------ | ------- | ---- | ------------------------------------------------------------ |
2931| top    | boolean | 是   | 是否跳转到页面最顶部,设置为false时将页面内容向上滚动半个视框大小,设置为true时跳转到页面最顶部。 |
2932
2933**错误码:**
2934
2935以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2936
2937| 错误码ID | 错误信息                                                     |
2938| -------- | ------------------------------------------------------------ |
2939| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2940
2941**示例:**
2942
2943```ts
2944// xxx.ets
2945import web_webview from '@ohos.web.webview';
2946
2947@Entry
2948@Component
2949struct WebComponent {
2950  controller: web_webview.WebviewController = new web_webview.WebviewController();
2951
2952  build() {
2953    Column() {
2954      Button('pageUp')
2955        .onClick(() => {
2956          try {
2957            this.controller.pageUp(false);
2958          } catch (error) {
2959            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2960          }
2961        })
2962      Web({ src: 'www.example.com', controller: this.controller })
2963    }
2964  }
2965}
2966```
2967
2968### pageDown
2969
2970pageDown(bottom:boolean): void
2971
2972将Webview的内容向下滚动半个视框大小或者跳转到页面最底部,通过bottom入参控制。
2973
2974**系统能力:** SystemCapability.Web.Webview.Core
2975
2976**参数:**
2977
2978| 参数名 | 类型    | 必填 | 说明                                                         |
2979| ------ | ------- | ---- | ------------------------------------------------------------ |
2980| bottom | boolean | 是   | 是否跳转到页面最底部,设置为false时将页面内容向下滚动半个视框大小,设置为true时跳转到页面最底部。 |
2981
2982**错误码:**
2983
2984以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2985
2986| 错误码ID | 错误信息                                                     |
2987| -------- | ------------------------------------------------------------ |
2988| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2989
2990**示例:**
2991
2992```ts
2993// xxx.ets
2994import web_webview from '@ohos.web.webview';
2995
2996@Entry
2997@Component
2998struct WebComponent {
2999  controller: web_webview.WebviewController = new web_webview.WebviewController();
3000
3001  build() {
3002    Column() {
3003      Button('pageDown')
3004        .onClick(() => {
3005          try {
3006            this.controller.pageDown(false);
3007          } catch (error) {
3008            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3009          }
3010        })
3011      Web({ src: 'www.example.com', controller: this.controller })
3012    }
3013  }
3014}
3015```
3016
3017### getBackForwardEntries
3018
3019getBackForwardEntries(): BackForwardList
3020
3021获取当前Webview的历史信息列表。
3022
3023**系统能力:** SystemCapability.Web.Webview.Core
3024
3025**返回值:**
3026
3027| 类型                                | 说明                        |
3028| ----------------------------------- | --------------------------- |
3029| [BackForwardList](#backforwardlist) | 当前Webview的历史信息列表。 |
3030
3031**错误码:**
3032
3033以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3034
3035| 错误码ID | 错误信息                                                     |
3036| -------- | ------------------------------------------------------------ |
3037| 17100001 | Init error. The WebviewController must be associated with a Web component. |
3038
3039**示例:**
3040
3041```ts
3042// xxx.ets
3043import web_webview from '@ohos.web.webview';
3044
3045@Entry
3046@Component
3047struct WebComponent {
3048  controller: web_webview.WebviewController = new web_webview.WebviewController();
3049
3050  build() {
3051    Column() {
3052      Button('getBackForwardEntries')
3053        .onClick(() => {
3054          try {
3055            let list = this.controller.getBackForwardEntries()
3056          } catch (error) {
3057            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3058          }
3059        })
3060      Web({ src: 'www.example.com', controller: this.controller })
3061    }
3062  }
3063}
3064```
3065
3066### serializeWebState
3067
3068serializeWebState(): Uint8Array
3069
3070将当前Webview的页面状态历史记录信息序列化。
3071
3072**系统能力:** SystemCapability.Web.Webview.Core
3073
3074**返回值:**
3075
3076| 类型       | 说明                                          |
3077| ---------- | --------------------------------------------- |
3078| Uint8Array | 当前Webview的页面状态历史记录序列化后的数据。 |
3079
3080**错误码:**
3081
3082以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3083
3084| 错误码ID | 错误信息                                                     |
3085| -------- | ------------------------------------------------------------ |
3086| 17100001 | Init error. The WebviewController must be associated with a Web component. |
3087
3088**示例:**
3089
30901.对文件的操作需要导入文件管理模块,详情请参考[文件管理](./js-apis-file-fs.md)。
3091```ts
3092// xxx.ets
3093import web_webview from '@ohos.web.webview';
3094import fs from '@ohos.file.fs';
3095
3096@Entry
3097@Component
3098struct WebComponent {
3099  controller: web_webview.WebviewController = new web_webview.WebviewController();
3100
3101  build() {
3102    Column() {
3103      Button('serializeWebState')
3104        .onClick(() => {
3105          try {
3106            let state = this.controller.serializeWebState();
3107            // globalThis.cacheDirMainAbility.ts中获取。
3108            let path = globalThis.cacheDir;
3109            path += '/WebState';
3110            // 以同步方法打开文件。
3111            let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
3112            fs.writeSync(file.fd, state.buffer);
3113            fs.closeSync(file.fd);
3114          } catch (error) {
3115            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3116          }
3117        })
3118      Web({ src: 'www.example.com', controller: this.controller })
3119    }
3120  }
3121}
3122```
3123
31242.修改MainAbility.ts3125获取应用缓存文件路径。
3126```ts
3127// xxx.ts
3128import UIAbility from '@ohos.app.ability.UIAbility';
3129import web_webview from '@ohos.web.webview';
3130
3131export default class MainAbility extends UIAbility {
3132    onCreate(want, launchParam) {
3133        // 通过在globalThis对象上绑定cacheDir,可以实现UIAbility组件与Page之间的数据同步。
3134        globalThis.cacheDir = this.context.cacheDir;
3135    }
3136}
3137```
3138
3139### restoreWebState
3140
3141restoreWebState(state: Uint8Array): void
3142
3143当前Webview从序列化数据中恢复页面状态历史记录。
3144
3145**系统能力:** SystemCapability.Web.Webview.Core
3146
3147**参数:**
3148
3149| 参数名 | 类型       | 必填 | 说明                         |
3150| ------ | ---------- | ---- | ---------------------------- |
3151| state  | Uint8Array | 是   | 页面状态历史记录序列化数据。 |
3152
3153**错误码:**
3154
3155以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3156
3157| 错误码ID | 错误信息                                                     |
3158| -------- | ------------------------------------------------------------ |
3159| 17100001 | Init error. The WebviewController must be associated with a Web component. |
3160
3161**示例:**
3162
31631.对文件的操作需要导入文件管理模块,详情请参考[文件管理](./js-apis-file-fs.md)。
3164```ts
3165// xxx.ets
3166import web_webview from '@ohos.web.webview';
3167import fs from '@ohos.file.fs';
3168
3169@Entry
3170@Component
3171struct WebComponent {
3172  controller: web_webview.WebviewController = new web_webview.WebviewController();
3173
3174  build() {
3175    Column() {
3176      Button('RestoreWebState')
3177        .onClick(() => {
3178          try {
3179            // globalThis.cacheDirMainAbility.ts中获取。
3180            let path = globalThis.cacheDir;
3181            path += '/WebState';
3182            // 以同步方法打开文件。
3183            let file = fs.openSync(path, fs.OpenMode.READ_WRITE);
3184            let stat = fs.statSync(path);
3185            let size = stat.size;
3186            let buf = new ArrayBuffer(size);
3187            fs.read(file.fd, buf, (err, readLen) => {
3188              if (err) {
3189                console.info("mkdir failed with error message: " + err.message + ", error code: " + err.code);
3190              } else {
3191                console.info("read file data succeed");
3192                this.controller.restoreWebState(new Uint8Array(buf.slice(0, readLen)));
3193                fs.closeSync(file);
3194              }
3195            });
3196          } catch (error) {
3197            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3198          }
3199        })
3200      Web({ src: 'www.example.com', controller: this.controller })
3201    }
3202  }
3203}
3204```
3205
32062.修改MainAbility.ts3207获取应用缓存文件路径。
3208```ts
3209// xxx.ts
3210import UIAbility from '@ohos.app.ability.UIAbility';
3211import web_webview from '@ohos.web.webview';
3212
3213export default class MainAbility extends UIAbility {
3214    onCreate(want, launchParam) {
3215        // 通过在globalThis对象上绑定cacheDir,可以实现UIAbility组件与Page之间的数据同步。
3216        globalThis.cacheDir = this.context.cacheDir;
3217    }
3218}
3219```
3220
3221### customizeSchemes
3222
3223static customizeSchemes(schemes: Array\<WebCustomScheme\>): void
3224
3225配置Web自定义协议请求的权限。建议在任何Web组件初始化之前进行调用。
3226
3227**系统能力:** SystemCapability.Web.Webview.Core
3228
3229**参数:**
3230
3231| 参数名   | 类型    | 必填 | 说明                      |
3232| -------- | ------- | ---- | -------------------------------------- |
3233| schemes | Array\<[WebCustomScheme](#webcustomscheme)\> | 是   | 自定义协议配置,最多支持同时配置10个自定义协议。 |
3234
3235**示例:**
3236
3237```ts
3238// xxx.ets
3239import web_webview from '@ohos.web.webview';
3240
3241@Entry
3242@Component
3243struct WebComponent {
3244  controller: web_webview.WebviewController = new web_webview.WebviewController();
3245  responseweb: WebResourceResponse = new WebResourceResponse()
3246  scheme1: web_webview.WebCustomScheme = {schemeName: "name1", isSupportCORS: true, isSupportFetch: true}
3247  scheme2: web_webview.WebCustomScheme = {schemeName: "name2", isSupportCORS: true, isSupportFetch: true}
3248  scheme3: web_webview.WebCustomScheme = {schemeName: "name3", isSupportCORS: true, isSupportFetch: true}
3249
3250  aboutToAppear():void {
3251    try {
3252      web_webview.WebviewController.customizeSchemes([this.scheme1, this.scheme2, this.scheme3])
3253    } catch(error) {
3254      console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3255    }
3256  }
3257
3258  build() {
3259    Column() {
3260      Web({ src: 'www.example.com', controller: this.controller })
3261        .onInterceptRequest((event) => {
3262          console.log('url:' + event.request.getRequestUrl())
3263          return this.responseweb
3264        })
3265    }
3266  }
3267}
3268```
3269
3270## WebCookieManager
3271
3272通过WebCookie可以控制Web组件中的cookie的各种行为,其中每个应用中的所有web组件共享一个WebCookieManager实例。
3273
3274### getCookie
3275
3276static getCookie(url: string): string
3277
3278获取指定url对应cookie的值。
3279
3280**系统能力:** SystemCapability.Web.Webview.Core
3281
3282**参数:**
3283
3284| 参数名 | 类型   | 必填 | 说明                      |
3285| ------ | ------ | ---- | :------------------------ |
3286| url    | string | 是   | 要获取的cookie所属的url,建议使用完整的url。 |
3287
3288**返回值:**
3289
3290| 类型   | 说明                      |
3291| ------ | ------------------------- |
3292| string | 指定url对应的cookie的值。 |
3293
3294**错误码:**
3295
3296以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3297
3298| 错误码ID | 错误信息                                               |
3299| -------- | ------------------------------------------------------ |
3300| 17100002 | Invalid url.                                           |
3301
3302**示例:**
3303
3304```ts
3305// xxx.ets
3306import web_webview from '@ohos.web.webview'
3307
3308@Entry
3309@Component
3310struct WebComponent {
3311  controller: web_webview.WebviewController = new web_webview.WebviewController();
3312
3313  build() {
3314    Column() {
3315      Button('getCookie')
3316        .onClick(() => {
3317          try {
3318            let value = web_webview.WebCookieManager.getCookie('https://www.example.com');
3319            console.log("value: " + value);
3320          } catch (error) {
3321            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3322          }
3323        })
3324      Web({ src: 'www.example.com', controller: this.controller })
3325    }
3326  }
3327}
3328```
3329
3330### setCookie
3331
3332static setCookie(url: string, value: string): void
3333
3334为指定url设置单个cookie的值。
3335
3336**系统能力:** SystemCapability.Web.Webview.Core
3337
3338**参数:**
3339
3340| 参数名 | 类型   | 必填 | 说明                      |
3341| ------ | ------ | ---- | :------------------------ |
3342| url    | string | 是   | 要设置的cookie所属的url,建议使用完整的url。 |
3343| value  | string | 是   | 要设置的cookie的值。      |
3344
3345**错误码:**
3346
3347以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3348
3349| 错误码ID | 错误信息                                               |
3350| -------- | ------------------------------------------------------ |
3351| 17100002 | Invalid url.                                           |
3352| 17100005 | Invalid cookie value.                                  |
3353
3354**示例:**
3355
3356```ts
3357// xxx.ets
3358import web_webview from '@ohos.web.webview'
3359
3360@Entry
3361@Component
3362struct WebComponent {
3363  controller: web_webview.WebviewController = new web_webview.WebviewController();
3364
3365  build() {
3366    Column() {
3367      Button('setCookie')
3368        .onClick(() => {
3369          try {
3370            web_webview.WebCookieManager.setCookie('https://www.example.com', 'a=b');
3371          } catch (error) {
3372            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3373          }
3374        })
3375      Web({ src: 'www.example.com', controller: this.controller })
3376    }
3377  }
3378}
3379```
3380
3381### saveCookieAsync
3382
3383static saveCookieAsync(callback: AsyncCallback\<void>): void
3384
3385将当前存在内存中的cookie异步保存到磁盘中。
3386
3387**系统能力:** SystemCapability.Web.Webview.Core
3388
3389**参数:**
3390
3391| 参数名   | 类型                   | 必填 | 说明                                               |
3392| -------- | ---------------------- | ---- | :------------------------------------------------- |
3393| callback | AsyncCallback\<void> | 是   | callback回调,用于获取cookie是否成功保存。 |
3394
3395
3396**示例:**
3397
3398```ts
3399// xxx.ets
3400import web_webview from '@ohos.web.webview'
3401
3402@Entry
3403@Component
3404struct WebComponent {
3405  controller: web_webview.WebviewController = new web_webview.WebviewController();
3406
3407  build() {
3408    Column() {
3409      Button('saveCookieAsync')
3410        .onClick(() => {
3411          try {
3412            web_webview.WebCookieManager.saveCookieAsync((error) => {
3413              if (error) {
3414                console.log("error: " + error);
3415              }
3416            })
3417          } catch (error) {
3418            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3419          }
3420        })
3421      Web({ src: 'www.example.com', controller: this.controller })
3422    }
3423  }
3424}
3425```
3426
3427### saveCookieAsync
3428
3429static saveCookieAsync(): Promise\<void>
3430
3431将当前存在内存中的cookie以Promise方法异步保存到磁盘中。
3432
3433**系统能力:** SystemCapability.Web.Webview.Core
3434
3435**返回值:**
3436
3437| 类型             | 说明                                      |
3438| ---------------- | ----------------------------------------- |
3439| Promise\<void> | Promise实例,用于获取cookie是否成功保存。 |
3440
3441**示例:**
3442
3443```ts
3444// xxx.ets
3445import web_webview from '@ohos.web.webview'
3446
3447@Entry
3448@Component
3449struct WebComponent {
3450  controller: web_webview.WebviewController = new web_webview.WebviewController();
3451
3452  build() {
3453    Column() {
3454      Button('saveCookieAsync')
3455        .onClick(() => {
3456          try {
3457            web_webview.WebCookieManager.saveCookieAsync()
3458              .then(() => {
3459                console.log("saveCookieAsyncCallback success!");
3460              })
3461              .catch((error) => {
3462                console.error("error: " + error);
3463              });
3464          } catch (error) {
3465            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3466          }
3467        })
3468      Web({ src: 'www.example.com', controller: this.controller })
3469    }
3470  }
3471}
3472```
3473
3474### putAcceptCookieEnabled
3475
3476static putAcceptCookieEnabled(accept: boolean): void
3477
3478设置WebCookieManager实例是否拥有发送和接收cookie的权限。
3479
3480**系统能力:** SystemCapability.Web.Webview.Core
3481
3482**参数:**
3483
3484| 参数名 | 类型    | 必填 | 说明                                 |
3485| ------ | ------- | ---- | :----------------------------------- |
3486| accept | boolean | 是   | 设置是否拥有发送和接收cookie的权限。 |
3487
3488**示例:**
3489
3490```ts
3491// xxx.ets
3492import web_webview from '@ohos.web.webview'
3493
3494@Entry
3495@Component
3496struct WebComponent {
3497  controller: web_webview.WebviewController = new web_webview.WebviewController();
3498
3499  build() {
3500    Column() {
3501      Button('putAcceptCookieEnabled')
3502        .onClick(() => {
3503          try {
3504            web_webview.WebCookieManager.putAcceptCookieEnabled(false);
3505          } catch (error) {
3506            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3507          }
3508        })
3509      Web({ src: 'www.example.com', controller: this.controller })
3510    }
3511  }
3512}
3513```
3514
3515### isCookieAllowed
3516
3517static isCookieAllowed(): boolean
3518
3519获取WebCookieManager实例是否拥有发送和接收cookie的权限。
3520
3521**系统能力:** SystemCapability.Web.Webview.Core
3522
3523**返回值:**
3524
3525| 类型    | 说明                             |
3526| ------- | -------------------------------- |
3527| boolean | 是否拥有发送和接收cookie的权限,默认为true。 |
3528
3529**示例:**
3530
3531```ts
3532// xxx.ets
3533import web_webview from '@ohos.web.webview'
3534
3535@Entry
3536@Component
3537struct WebComponent {
3538  controller: web_webview.WebviewController = new web_webview.WebviewController();
3539
3540  build() {
3541    Column() {
3542      Button('isCookieAllowed')
3543        .onClick(() => {
3544          let result = web_webview.WebCookieManager.isCookieAllowed();
3545          console.log("result: " + result);
3546        })
3547      Web({ src: 'www.example.com', controller: this.controller })
3548    }
3549  }
3550}
3551```
3552
3553### putAcceptThirdPartyCookieEnabled
3554
3555static putAcceptThirdPartyCookieEnabled(accept: boolean): void
3556
3557设置WebCookieManager实例是否拥有发送和接收第三方cookie的权限。
3558
3559**系统能力:** SystemCapability.Web.Webview.Core
3560
3561**参数:**
3562
3563| 参数名 | 类型    | 必填 | 说明                                       |
3564| ------ | ------- | ---- | :----------------------------------------- |
3565| accept | boolean | 是   | 设置是否拥有发送和接收第三方cookie的权限。 |
3566
3567**示例:**
3568
3569```ts
3570// xxx.ets
3571import web_webview from '@ohos.web.webview'
3572
3573@Entry
3574@Component
3575struct WebComponent {
3576  controller: web_webview.WebviewController = new web_webview.WebviewController();
3577
3578  build() {
3579    Column() {
3580      Button('putAcceptThirdPartyCookieEnabled')
3581        .onClick(() => {
3582          try {
3583            web_webview.WebCookieManager.putAcceptThirdPartyCookieEnabled(false);
3584          } catch (error) {
3585            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3586          }
3587        })
3588      Web({ src: 'www.example.com', controller: this.controller })
3589    }
3590  }
3591}
3592```
3593
3594### isThirdPartyCookieAllowed
3595
3596static isThirdPartyCookieAllowed(): boolean
3597
3598获取WebCookieManager实例是否拥有发送和接收第三方cookie的权限。
3599
3600**系统能力:** SystemCapability.Web.Webview.Core
3601
3602**返回值:**
3603
3604| 类型    | 说明                                   |
3605| ------- | -------------------------------------- |
3606| boolean | 是否拥有发送和接收第三方cookie的权限,默认为false。 |
3607
3608**示例:**
3609
3610```ts
3611// xxx.ets
3612import web_webview from '@ohos.web.webview'
3613
3614@Entry
3615@Component
3616struct WebComponent {
3617  controller: web_webview.WebviewController = new web_webview.WebviewController();
3618
3619  build() {
3620    Column() {
3621      Button('isThirdPartyCookieAllowed')
3622        .onClick(() => {
3623          let result = web_webview.WebCookieManager.isThirdPartyCookieAllowed();
3624          console.log("result: " + result);
3625        })
3626      Web({ src: 'www.example.com', controller: this.controller })
3627    }
3628  }
3629}
3630```
3631
3632### existCookie
3633
3634static existCookie(): boolean
3635
3636获取是否存在cookie。
3637
3638**系统能力:** SystemCapability.Web.Webview.Core
3639
3640**返回值:**
3641
3642| 类型    | 说明                                   |
3643| ------- | -------------------------------------- |
3644| boolean | 是否拥有发送和接收第三方cookie的权限。 |
3645
3646**示例:**
3647
3648```ts
3649// xxx.ets
3650import web_webview from '@ohos.web.webview'
3651
3652@Entry
3653@Component
3654struct WebComponent {
3655  controller: web_webview.WebviewController = new web_webview.WebviewController();
3656
3657  build() {
3658    Column() {
3659      Button('existCookie')
3660        .onClick(() => {
3661          let result = web_webview.WebCookieManager.existCookie();
3662          console.log("result: " + result);
3663        })
3664      Web({ src: 'www.example.com', controller: this.controller })
3665    }
3666  }
3667}
3668```
3669
3670### deleteEntireCookie
3671
3672static deleteEntireCookie(): void
3673
3674清除所有cookie。
3675
3676**系统能力:** SystemCapability.Web.Webview.Core
3677
3678**示例:**
3679
3680```ts
3681// xxx.ets
3682import web_webview from '@ohos.web.webview'
3683
3684@Entry
3685@Component
3686struct WebComponent {
3687  controller: web_webview.WebviewController = new web_webview.WebviewController();
3688
3689  build() {
3690    Column() {
3691      Button('deleteEntireCookie')
3692        .onClick(() => {
3693          web_webview.WebCookieManager.deleteEntireCookie();
3694        })
3695      Web({ src: 'www.example.com', controller: this.controller })
3696    }
3697  }
3698}
3699```
3700
3701### deleteSessionCookie
3702
3703static deleteSessionCookie(): void
3704
3705清除所有会话cookie。
3706
3707**系统能力:** SystemCapability.Web.Webview.Core
3708
3709**示例:**
3710
3711```ts
3712// xxx.ets
3713import web_webview from '@ohos.web.webview'
3714
3715@Entry
3716@Component
3717struct WebComponent {
3718  controller: web_webview.WebviewController = new web_webview.WebviewController();
3719
3720  build() {
3721    Column() {
3722      Button('deleteSessionCookie')
3723        .onClick(() => {
3724          web_webview.WebCookieManager.deleteSessionCookie();
3725        })
3726      Web({ src: 'www.example.com', controller: this.controller })
3727    }
3728  }
3729}
3730```
3731
3732## WebStorage
3733
3734通过WebStorage可管理Web SQL数据库接口和HTML5 Web存储接口,每个应用中的所有Web组件共享一个WebStorage。
3735
3736### deleteOrigin
3737
3738static deleteOrigin(origin : string): void
3739
3740清除指定源所使用的存储。
3741
3742**系统能力:** SystemCapability.Web.Webview.Core
3743
3744**参数:**
3745
3746| 参数名 | 类型   | 必填 | 说明                     |
3747| ------ | ------ | ---- | ------------------------ |
3748| origin | string | 是   | 指定源的字符串索引,来自于[getOrigins](#getorigins)。 |
3749
3750**错误码:**
3751
3752以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3753
3754| 错误码ID | 错误信息                                               |
3755| -------- | ------------------------------------------------------ |
3756| 17100011 | Invalid origin.                             |
3757
3758**示例:**
3759
3760```ts
3761// xxx.ets
3762import web_webview from '@ohos.web.webview';
3763
3764@Entry
3765@Component
3766struct WebComponent {
3767  controller: web_webview.WebviewController = new web_webview.WebviewController();
3768  origin: string = "file:///";
3769
3770  build() {
3771    Column() {
3772      Button('deleteOrigin')
3773        .onClick(() => {
3774          try {
3775            web_webview.WebStorage.deleteOrigin(this.origin);
3776          } catch (error) {
3777            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
3778          }
3779
3780        })
3781      Web({ src: 'www.example.com', controller: this.controller })
3782        .databaseAccess(true)
3783    }
3784  }
3785}
3786```
3787
3788### getOrigins
3789
3790static getOrigins(callback: AsyncCallback\<Array\<WebStorageOrigin>>) : void
3791
3792以回调方式异步获取当前使用Web SQL数据库的所有源的信息。
3793
3794**系统能力:** SystemCapability.Web.Webview.Core
3795
3796**参数:**
3797
3798| 参数名   | 类型                                   | 必填 | 说明                                                   |
3799| -------- | -------------------------------------- | ---- | ------------------------------------------------------ |
3800| callback | AsyncCallback\<Array\<[WebStorageOrigin](#webstorageorigin)>> | 是   | 以数组方式返回源的信息,信息内容参考[WebStorageOrigin](#webstorageorigin)。 |
3801
3802**错误码:**
3803
3804以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3805
3806| 错误码ID | 错误信息                                               |
3807| -------- | ------------------------------------------------------ |
3808| 17100012 | Invalid web storage origin.                             |
3809
3810**示例:**
3811
3812```ts
3813// xxx.ets
3814import web_webview from '@ohos.web.webview';
3815
3816@Entry
3817@Component
3818struct WebComponent {
3819  controller: web_webview.WebviewController = new web_webview.WebviewController();
3820
3821  build() {
3822    Column() {
3823      Button('getOrigins')
3824        .onClick(() => {
3825          try {
3826            web_webview.WebStorage.getOrigins((error, origins) => {
3827              if (error) {
3828                console.log('error: ' + JSON.stringify(error));
3829                return;
3830              }
3831              for (let i = 0; i < origins.length; i++) {
3832                console.log('origin: ' + origins[i].origin);
3833                console.log('usage: ' + origins[i].usage);
3834                console.log('quota: ' + origins[i].quota);
3835              }
3836            })
3837          } catch (error) {
3838            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
3839          }
3840
3841        })
3842      Web({ src: 'www.example.com', controller: this.controller })
3843        .databaseAccess(true)
3844    }
3845  }
3846}
3847```
3848
3849### getOrigins
3850
3851static getOrigins() : Promise\<Array\<WebStorageOrigin>>
3852
3853以Promise方式异步获取当前使用Web SQL数据库的所有源的信息。
3854
3855**系统能力:** SystemCapability.Web.Webview.Core
3856
3857**返回值:**
3858
3859| 类型                             | 说明                                                         |
3860| -------------------------------- | ------------------------------------------------------------ |
3861| Promise\<Array\<[WebStorageOrigin](#webstorageorigin)>> | Promise实例,用于获取当前所有源的信息,信息内容参考[WebStorageOrigin](#webstorageorigin)。 |
3862
3863**错误码:**
3864
3865以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3866
3867| 错误码ID | 错误信息                                               |
3868| -------- | ------------------------------------------------------ |
3869| 17100012 | Invalid web storage origin.                             |
3870
3871**示例:**
3872
3873```ts
3874// xxx.ets
3875import web_webview from '@ohos.web.webview';
3876
3877@Entry
3878@Component
3879struct WebComponent {
3880  controller: web_webview.WebviewController = new web_webview.WebviewController();
3881
3882  build() {
3883    Column() {
3884      Button('getOrigins')
3885        .onClick(() => {
3886          try {
3887            web_webview.WebStorage.getOrigins()
3888              .then(origins => {
3889                for (let i = 0; i < origins.length; i++) {
3890                  console.log('origin: ' + origins[i].origin);
3891                  console.log('usage: ' + origins[i].usage);
3892                  console.log('quota: ' + origins[i].quota);
3893                }
3894              })
3895              .catch(e => {
3896                console.log('error: ' + JSON.stringify(e));
3897              })
3898          } catch (error) {
3899            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
3900          }
3901
3902        })
3903      Web({ src: 'www.example.com', controller: this.controller })
3904        .databaseAccess(true)
3905    }
3906  }
3907}
3908```
3909
3910### getOriginQuota
3911
3912static getOriginQuota(origin : string, callback : AsyncCallback\<number>) : void
3913
3914使用callback回调异步获取指定源的Web SQL数据库的存储配额,配额以字节为单位。
3915
3916**系统能力:** SystemCapability.Web.Webview.Core
3917
3918**参数:**
3919
3920| 参数名   | 类型                  | 必填 | 说明               |
3921| -------- | --------------------- | ---- | ------------------ |
3922| origin   | string                | 是   | 指定源的字符串索引 |
3923| callback | AsyncCallback\<number> | 是   | 指定源的存储配额   |
3924
3925**错误码:**
3926
3927以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3928
3929| 错误码ID | 错误信息                                               |
3930| -------- | ------------------------------------------------------ |
3931| 17100011 | Invalid origin.                             |
3932
3933**示例:**
3934
3935```ts
3936// xxx.ets
3937import web_webview from '@ohos.web.webview';
3938
3939@Entry
3940@Component
3941struct WebComponent {
3942  controller: web_webview.WebviewController = new web_webview.WebviewController();
3943  origin: string = "file:///";
3944
3945  build() {
3946    Column() {
3947      Button('getOriginQuota')
3948        .onClick(() => {
3949          try {
3950            web_webview.WebStorage.getOriginQuota(this.origin, (error, quota) => {
3951              if (error) {
3952                console.log('error: ' + JSON.stringify(error));
3953                return;
3954              }
3955              console.log('quota: ' + quota);
3956            })
3957          } catch (error) {
3958            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
3959          }
3960
3961        })
3962      Web({ src: 'www.example.com', controller: this.controller })
3963        .databaseAccess(true)
3964    }
3965  }
3966}
3967```
3968
3969### getOriginQuota
3970
3971static getOriginQuota(origin : string) : Promise\<number>
3972
3973以Promise方式异步获取指定源的Web SQL数据库的存储配额,配额以字节为单位。
3974
3975**系统能力:** SystemCapability.Web.Webview.Core
3976
3977**参数:**
3978
3979| 参数名 | 类型   | 必填 | 说明               |
3980| ------ | ------ | ---- | ------------------ |
3981| origin | string | 是   | 指定源的字符串索引 |
3982
3983**返回值:**
3984
3985| 类型            | 说明                                    |
3986| --------------- | --------------------------------------- |
3987| Promise\<number> | Promise实例,用于获取指定源的存储配额。 |
3988
3989**错误码:**
3990
3991以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3992
3993| 错误码ID | 错误信息                                               |
3994| -------- | ------------------------------------------------------ |
3995| 17100011 | Invalid origin.                             |
3996
3997**示例:**
3998
3999```ts
4000// xxx.ets
4001import web_webview from '@ohos.web.webview';
4002
4003@Entry
4004@Component
4005struct WebComponent {
4006  controller: web_webview.WebviewController = new web_webview.WebviewController();
4007  origin: string = "file:///";
4008
4009  build() {
4010    Column() {
4011      Button('getOriginQuota')
4012        .onClick(() => {
4013          try {
4014            web_webview.WebStorage.getOriginQuota(this.origin)
4015              .then(quota => {
4016                console.log('quota: ' + quota);
4017              })
4018              .catch(e => {
4019                console.log('error: ' + JSON.stringify(e));
4020              })
4021          } catch (error) {
4022            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4023          }
4024
4025        })
4026      Web({ src: 'www.example.com', controller: this.controller })
4027        .databaseAccess(true)
4028    }
4029  }
4030}
4031```
4032
4033### getOriginUsage
4034
4035static getOriginUsage(origin : string, callback : AsyncCallback\<number>) : void
4036
4037以回调方式异步获取指定源的Web SQL数据库的存储量,存储量以字节为单位。
4038
4039**系统能力:** SystemCapability.Web.Webview.Core
4040
4041**参数:**
4042
4043| 参数名   | 类型                  | 必填 | 说明               |
4044| -------- | --------------------- | ---- | ------------------ |
4045| origin   | string                | 是   | 指定源的字符串索引 |
4046| callback | AsyncCallback\<number> | 是   | 指定源的存储量。   |
4047
4048**错误码:**
4049
4050以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4051
4052| 错误码ID | 错误信息                                               |
4053| -------- | ------------------------------------------------------ |
4054| 17100011 | Invalid origin.                             |
4055
4056**示例:**
4057
4058```ts
4059// xxx.ets
4060import web_webview from '@ohos.web.webview';
4061
4062@Entry
4063@Component
4064struct WebComponent {
4065  controller: web_webview.WebviewController = new web_webview.WebviewController();
4066  origin: string = "file:///";
4067
4068  build() {
4069    Column() {
4070      Button('getOriginUsage')
4071        .onClick(() => {
4072          try {
4073            web_webview.WebStorage.getOriginUsage(this.origin, (error, usage) => {
4074              if (error) {
4075                console.log('error: ' + JSON.stringify(error));
4076                return;
4077              }
4078              console.log('usage: ' + usage);
4079            })
4080          } catch (error) {
4081            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4082          }
4083
4084        })
4085      Web({ src: 'www.example.com', controller: this.controller })
4086        .databaseAccess(true)
4087    }
4088  }
4089}
4090```
4091
4092### getOriginUsage
4093
4094static getOriginUsage(origin : string) : Promise\<number>
4095
4096以Promise方式异步获取指定源的Web SQL数据库的存储量,存储量以字节为单位。
4097
4098**系统能力:** SystemCapability.Web.Webview.Core
4099
4100**参数:**
4101
4102| 参数名 | 类型   | 必填 | 说明               |
4103| ------ | ------ | ---- | ------------------ |
4104| origin | string | 是   | 指定源的字符串索引 |
4105
4106**返回值:**
4107
4108| 类型            | 说明                                  |
4109| --------------- | ------------------------------------- |
4110| Promise\<number> | Promise实例,用于获取指定源的存储量。 |
4111
4112**错误码:**
4113
4114以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4115
4116| 错误码ID | 错误信息                                              |
4117| -------- | ----------------------------------------------------- |
4118| 17100011 | Invalid origin.                            |
4119
4120**示例:**
4121
4122```ts
4123// xxx.ets
4124import web_webview from '@ohos.web.webview';
4125
4126@Entry
4127@Component
4128struct WebComponent {
4129  controller: web_webview.WebviewController = new web_webview.WebviewController();
4130  origin: string = "file:///";
4131
4132  build() {
4133    Column() {
4134      Button('getOriginUsage')
4135        .onClick(() => {
4136          try {
4137            web_webview.WebStorage.getOriginUsage(this.origin)
4138              .then(usage => {
4139                console.log('usage: ' + usage);
4140              })
4141              .catch(e => {
4142                console.log('error: ' + JSON.stringify(e));
4143              })
4144          } catch (error) {
4145            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4146          }
4147
4148        })
4149      Web({ src: 'www.example.com', controller: this.controller })
4150        .databaseAccess(true)
4151    }
4152  }
4153}
4154```
4155
4156### deleteAllData
4157
4158static deleteAllData(): void
4159
4160清除Web SQL数据库当前使用的所有存储。
4161
4162**系统能力:** SystemCapability.Web.Webview.Core
4163
4164**示例:**
4165
4166```ts
4167// xxx.ets
4168import web_webview from '@ohos.web.webview';
4169
4170@Entry
4171@Component
4172struct WebComponent {
4173  controller: web_webview.WebviewController = new web_webview.WebviewController();
4174
4175  build() {
4176    Column() {
4177      Button('deleteAllData')
4178        .onClick(() => {
4179          try {
4180            web_webview.WebStorage.deleteAllData();
4181          } catch (error) {
4182            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4183          }
4184        })
4185      Web({ src: 'www.example.com', controller: this.controller })
4186        .databaseAccess(true)
4187    }
4188  }
4189}
4190```
4191
4192## WebDataBase
4193
4194web组件数据库管理对象。
4195
4196### getHttpAuthCredentials
4197
4198static getHttpAuthCredentials(host: string, realm: string): Array\<string>
4199
4200检索给定主机和域的HTTP身份验证凭据,该方法为同步方法。
4201
4202**系统能力:** SystemCapability.Web.Webview.Core
4203
4204**参数:**
4205
4206| 参数名 | 类型   | 必填 | 说明                         |
4207| ------ | ------ | ---- | ---------------------------- |
4208| host   | string | 是   | HTTP身份验证凭据应用的主机。 |
4209| realm  | string | 是   | HTTP身份验证凭据应用的域。   |
4210
4211**返回值:**
4212
4213| 类型  | 说明                                         |
4214| ----- | -------------------------------------------- |
4215| Array\<string> | 包含用户名和密码的组数,检索失败返回空数组。 |
4216
4217**示例:**
4218
4219```ts
4220// xxx.ets
4221import web_webview from '@ohos.web.webview';
4222
4223@Entry
4224@Component
4225struct WebComponent {
4226  controller: web_webview.WebviewController = new web_webview.WebviewController();
4227  host: string = "www.spincast.org";
4228  realm: string = "protected example";
4229  username_password: string[];
4230
4231  build() {
4232    Column() {
4233      Button('getHttpAuthCredentials')
4234        .onClick(() => {
4235          try {
4236            this.username_password = web_webview.WebDataBase.getHttpAuthCredentials(this.host, this.realm);
4237            console.log('num: ' + this.username_password.length);
4238          } catch (error) {
4239            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4240          }
4241        })
4242      Web({ src: 'www.example.com', controller: this.controller })
4243    }
4244  }
4245}
4246```
4247
4248### saveHttpAuthCredentials
4249
4250static saveHttpAuthCredentials(host: string, realm: string, username: string, password: string): void
4251
4252保存给定主机和域的HTTP身份验证凭据,该方法为同步方法。
4253
4254**系统能力:** SystemCapability.Web.Webview.Core
4255
4256**参数:**
4257
4258| 参数名   | 类型   | 必填 | 说明                         |
4259| -------- | ------ | ---- | ---------------------------- |
4260| host     | string | 是   | HTTP身份验证凭据应用的主机。 |
4261| realm    | string | 是   | HTTP身份验证凭据应用的域。   |
4262| username | string | 是   | 用户名。                     |
4263| password | string | 是   | 密码。                       |
4264
4265**示例:**
4266
4267```ts
4268// xxx.ets
4269import web_webview from '@ohos.web.webview';
4270
4271@Entry
4272@Component
4273struct WebComponent {
4274  controller: web_webview.WebviewController = new web_webview.WebviewController();
4275  host: string = "www.spincast.org";
4276  realm: string = "protected example";
4277
4278  build() {
4279    Column() {
4280      Button('saveHttpAuthCredentials')
4281        .onClick(() => {
4282          try {
4283            web_webview.WebDataBase.saveHttpAuthCredentials(this.host, this.realm, "Stromgol", "Laroche");
4284          } catch (error) {
4285            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4286          }
4287        })
4288      Web({ src: 'www.example.com', controller: this.controller })
4289    }
4290  }
4291}
4292```
4293
4294### existHttpAuthCredentials
4295
4296static existHttpAuthCredentials(): boolean
4297
4298判断是否存在任何已保存的HTTP身份验证凭据,该方法为同步方法。存在返回true,不存在返回false。
4299
4300**系统能力:** SystemCapability.Web.Webview.Core
4301
4302**返回值:**
4303
4304| 类型    | 说明                                                         |
4305| ------- | ------------------------------------------------------------ |
4306| boolean | 是否存在任何已保存的HTTP身份验证凭据。存在返回true,不存在返回false |
4307
4308**示例:**
4309
4310```ts
4311// xxx.ets
4312import web_webview from '@ohos.web.webview';
4313
4314@Entry
4315@Component
4316struct WebComponent {
4317  controller: web_webview.WebviewController = new web_webview.WebviewController();
4318
4319  build() {
4320    Column() {
4321      Button('existHttpAuthCredentials')
4322        .onClick(() => {
4323          try {
4324            let result = web_webview.WebDataBase.existHttpAuthCredentials();
4325          } catch (error) {
4326            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4327          }
4328        })
4329      Web({ src: 'www.example.com', controller: this.controller })
4330    }
4331  }
4332}
4333```
4334
4335### deleteHttpAuthCredentials
4336
4337static deleteHttpAuthCredentials(): void
4338
4339清除所有已保存的HTTP身份验证凭据,该方法为同步方法。
4340
4341**系统能力:** SystemCapability.Web.Webview.Core
4342
4343**示例:**
4344
4345```ts
4346// xxx.ets
4347import web_webview from '@ohos.web.webview';
4348
4349@Entry
4350@Component
4351struct WebComponent {
4352  controller: web_webview.WebviewController = new web_webview.WebviewController();
4353
4354  build() {
4355    Column() {
4356      Button('deleteHttpAuthCredentials')
4357        .onClick(() => {
4358          try {
4359            web_webview.WebDataBase.deleteHttpAuthCredentials();
4360          } catch (error) {
4361            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4362          }
4363        })
4364      Web({ src: 'www.example.com', controller: this.controller })
4365    }
4366  }
4367}
4368```
4369
4370## GeolocationPermissions
4371
4372web组件地理位置权限管理对象。
4373
4374### 需要权限
4375
4376访问地理位置时需添加权限:ohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATIONohos.permission.LOCATION_IN_BACKGROUND,具体权限说明请参考[位置服务](./js-apis-geolocation.md)。
4377
4378### allowGeolocation
4379
4380static allowGeolocation(origin: string): void
4381
4382允许指定来源使用地理位置接口。
4383
4384**系统能力:** SystemCapability.Web.Webview.Core
4385
4386**参数:**
4387
4388| 参数名 | 类型   | 必填 | 说明               |
4389| ------ | ------ | ---- | ------------------ |
4390| origin | string | 是   |指定源的字符串索引 |
4391
4392**错误码:**
4393
4394以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4395
4396| 错误码ID | 错误信息                                               |
4397| -------- | ------------------------------------------------------ |
4398| 17100011 | Invalid origin.                             |
4399
4400**示例:**
4401
4402```ts
4403// xxx.ets
4404import web_webview from '@ohos.web.webview';
4405
4406@Entry
4407@Component
4408struct WebComponent {
4409  controller: web_webview.WebviewController = new web_webview.WebviewController();
4410  origin: string = "file:///";
4411
4412  build() {
4413    Column() {
4414      Button('allowGeolocation')
4415        .onClick(() => {
4416          try {
4417            web_webview.GeolocationPermissions.allowGeolocation(this.origin);
4418          } catch (error) {
4419            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4420          }
4421        })
4422      Web({ src: 'www.example.com', controller: this.controller })
4423    }
4424  }
4425}
4426```
4427
4428### deleteGeolocation
4429
4430static deleteGeolocation(origin: string): void
4431
4432清除指定来源的地理位置权限状态。
4433
4434**系统能力:** SystemCapability.Web.Webview.Core
4435
4436**参数:**
4437
4438| 参数名 | 类型   | 必填 | 说明               |
4439| ------ | ------ | ---- | ------------------ |
4440| origin | string | 是   | 指定源的字符串索引 |
4441
4442**错误码:**
4443
4444以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4445
4446| 错误码ID | 错误信息                                               |
4447| -------- | ------------------------------------------------------ |
4448| 17100011 | Invalid origin.                             |
4449
4450**示例:**
4451
4452```ts
4453// xxx.ets
4454import web_webview from '@ohos.web.webview';
4455
4456@Entry
4457@Component
4458struct WebComponent {
4459  controller: web_webview.WebviewController = new web_webview.WebviewController();
4460  origin: string = "file:///";
4461
4462  build() {
4463    Column() {
4464      Button('deleteGeolocation')
4465        .onClick(() => {
4466          try {
4467            web_webview.GeolocationPermissions.deleteGeolocation(this.origin);
4468          } catch (error) {
4469            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4470          }
4471        })
4472      Web({ src: 'www.example.com', controller: this.controller })
4473    }
4474  }
4475}
4476```
4477
4478### getAccessibleGeolocation
4479
4480static getAccessibleGeolocation(origin: string, callback: AsyncCallback\<boolean>): void
4481
4482以回调方式异步获取指定源的地理位置权限状态。
4483
4484**系统能力:** SystemCapability.Web.Webview.Core
4485
4486**参数:**
4487
4488| 参数名   | 类型                   | 必填 | 说明                                                         |
4489| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
4490| origin   | string                 | 是   | 指定源的字符串索引                                           |
4491| callback | AsyncCallback\<boolean> | 是   | 返回指定源的地理位置权限状态。获取成功,true表示已授权,false表示拒绝访问。获取失败,表示不存在指定源的权限状态。 |
4492
4493**错误码:**
4494
4495以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4496
4497| 错误码ID | 错误信息                                               |
4498| -------- | ------------------------------------------------------ |
4499| 17100011 | Invalid origin.                             |
4500
4501**示例:**
4502
4503```ts
4504// xxx.ets
4505import web_webview from '@ohos.web.webview';
4506
4507@Entry
4508@Component
4509struct WebComponent {
4510  controller: web_webview.WebviewController = new web_webview.WebviewController();
4511  origin: string = "file:///";
4512
4513  build() {
4514    Column() {
4515      Button('getAccessibleGeolocation')
4516        .onClick(() => {
4517          try {
4518            web_webview.GeolocationPermissions.getAccessibleGeolocation(this.origin, (error, result) => {
4519              if (error) {
4520                console.log('getAccessibleGeolocationAsync error: ' + JSON.stringify(error));
4521                return;
4522              }
4523              console.log('getAccessibleGeolocationAsync result: ' + result);
4524            });
4525          } catch (error) {
4526            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4527          }
4528        })
4529      Web({ src: 'www.example.com', controller: this.controller })
4530    }
4531  }
4532}
4533```
4534
4535### getAccessibleGeolocation
4536
4537static getAccessibleGeolocation(origin: string): Promise\<boolean>
4538
4539以Promise方式异步获取指定源的地理位置权限状态。
4540
4541**系统能力:** SystemCapability.Web.Webview.Core
4542
4543**参数:**
4544
4545| 参数名 | 类型 | 必填 | 说明             |
4546| ------ | -------- | ---- | -------------------- |
4547| origin | string   | 是   | 指定源的字符串索引。 |
4548
4549**返回值:**
4550
4551| 类型             | 说明                                                         |
4552| ---------------- | ------------------------------------------------------------ |
4553| Promise\<boolean> | Promise实例,用于获取指定源的权限状态,获取成功,true表示已授权,false表示拒绝访问。获取失败,表示不存在指定源的权限状态。 |
4554
4555**错误码:**
4556
4557以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4558
4559| 错误码ID | 错误信息                                               |
4560| -------- | ------------------------------------------------------ |
4561| 17100011 | Invalid origin.                             |
4562
4563**示例:**
4564
4565```ts
4566// xxx.ets
4567import web_webview from '@ohos.web.webview';
4568
4569@Entry
4570@Component
4571struct WebComponent {
4572  controller: web_webview.WebviewController = new web_webview.WebviewController();
4573  origin: string = "file:///";
4574
4575  build() {
4576    Column() {
4577      Button('getAccessibleGeolocation')
4578        .onClick(() => {
4579          try {
4580            web_webview.GeolocationPermissions.getAccessibleGeolocation(this.origin)
4581              .then(result => {
4582                console.log('getAccessibleGeolocationPromise result: ' + result);
4583              }).catch(error => {
4584              console.log('getAccessibleGeolocationPromise error: ' + JSON.stringify(error));
4585            });
4586          } catch (error) {
4587            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
4588          }
4589        })
4590      Web({ src: 'www.example.com', controller: this.controller })
4591    }
4592  }
4593}
4594```
4595
4596### getStoredGeolocation
4597
4598static getStoredGeolocation(callback: AsyncCallback\<Array\<string>>): void
4599
4600以回调方式异步获取已存储地理位置权限状态的所有源信息。
4601
4602**系统能力:** SystemCapability.Web.Webview.Core
4603
4604**参数:**
4605
4606| 参数名   | 类型                         | 必填 | 说明                                     |
4607| -------- | ---------------------------- | ---- | ---------------------------------------- |
4608| callback | AsyncCallback\<Array\<string>> | 是   | 返回已存储地理位置权限状态的所有源信息。 |
4609
4610**示例:**
4611
4612```ts
4613// xxx.ets
4614import web_webview from '@ohos.web.webview';
4615
4616@Entry
4617@Component
4618struct WebComponent {
4619  controller: web_webview.WebviewController = new web_webview.WebviewController();
4620
4621  build() {
4622    Column() {
4623      Button('getStoredGeolocation')
4624        .onClick(() => {
4625          try {
4626            web_webview.GeolocationPermissions.getStoredGeolocation((error, origins) => {
4627              if (error) {
4628                console.log('getStoredGeolocationAsync error: ' + JSON.stringify(error));
4629                return;
4630              }
4631              let origins_str: string = origins.join();
4632              console.log('getStoredGeolocationAsync origins: ' + origins_str);
4633            });
4634          } catch (error) {
4635            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4636          }
4637        })
4638      Web({ src: 'www.example.com', controller: this.controller })
4639    }
4640  }
4641}
4642```
4643
4644### getStoredGeolocation
4645
4646static getStoredGeolocation(): Promise\<Array\<string>>
4647
4648以Promise方式异步获取已存储地理位置权限状态的所有源信息。
4649
4650**系统能力:** SystemCapability.Web.Webview.Core
4651
4652**返回值:**
4653
4654| 类型                   | 说明                                                      |
4655| ---------------------- | --------------------------------------------------------- |
4656| Promise\<Array\<string>> | Promise实例,用于获取已存储地理位置权限状态的所有源信息。 |
4657
4658**示例:**
4659
4660```ts
4661// xxx.ets
4662import web_webview from '@ohos.web.webview';
4663
4664@Entry
4665@Component
4666struct WebComponent {
4667  controller: web_webview.WebviewController = new web_webview.WebviewController();
4668
4669  build() {
4670    Column() {
4671      Button('getStoredGeolocation')
4672        .onClick(() => {
4673          try {
4674            web_webview.GeolocationPermissions.getStoredGeolocation()
4675              .then(origins => {
4676                let origins_str: string = origins.join();
4677                console.log('getStoredGeolocationPromise origins: ' + origins_str);
4678              }).catch(error => {
4679              console.log('getStoredGeolocationPromise error: ' + JSON.stringify(error));
4680            });
4681          } catch (error) {
4682            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
4683          }
4684        })
4685      Web({ src: 'www.example.com', controller: this.controller })
4686    }
4687  }
4688}
4689```
4690
4691### deleteAllGeolocation
4692
4693static deleteAllGeolocation(): void
4694
4695清除所有来源的地理位置权限状态。
4696
4697**系统能力:** SystemCapability.Web.Webview.Core
4698
4699**示例:**
4700
4701```ts
4702// xxx.ets
4703import web_webview from '@ohos.web.webview';
4704
4705@Entry
4706@Component
4707struct WebComponent {
4708  controller: web_webview.WebviewController = new web_webview.WebviewController();
4709
4710  build() {
4711    Column() {
4712      Button('deleteAllGeolocation')
4713        .onClick(() => {
4714          try {
4715            web_webview.GeolocationPermissions.deleteAllGeolocation();
4716          } catch (error) {
4717            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4718          }
4719        })
4720      Web({ src: 'www.example.com', controller: this.controller })
4721    }
4722  }
4723}
4724```
4725## WebHeader
4726Web组件返回的请求/响应头对象。
4727
4728**系统能力:** SystemCapability.Web.Webview.Core
4729
4730| 名称        | 类型   | 可读 | 可写 |说明                 |
4731| ----------- | ------ | -----|------|------------------- |
4732| headerKey   | string | 是 | 是 | 请求/响应头的key。   |
4733| headerValue | string | 是 | 是 | 请求/响应头的value。 |
4734
4735## WebHitTestType
4736
4737**系统能力:** SystemCapability.Web.Webview.Core
4738
4739| 名称          | 值 | 说明                                      |
4740| ------------- | -- |----------------------------------------- |
4741| EditText      | 0 |可编辑的区域。                            |
4742| Email         | 1 |电子邮件地址。                            |
4743| HttpAnchor    | 2 |超链接,其src为http。                     |
4744| HttpAnchorImg | 3 |带有超链接的图片,其中超链接的src为http。 |
4745| Img           | 4 |HTML::img标签。                           |
4746| Map           | 5 |地理地址。                                |
4747| Phone         | 6 |电话号码。                                |
4748| Unknown       | 7 |未知内容。                                |
4749
4750##  HitTestValue
4751
4752提供点击区域的元素信息。示例代码参考getHitTestValue。
4753
4754**系统能力:** SystemCapability.Web.Webview.Core
4755
4756| 名称 | 类型 | 可读 | 可写 | 说明|
4757| ---- | ---- | ---- | ---- |---- |
4758| type | [WebHitTestType](#webhittesttype) | 是 | 否 | 当前被点击区域的元素类型。|
4759| extra | string        | 是 | 否 |点击区域的附加参数信息。若被点击区域为图片或链接,则附加参数信息为其url地址。 |
4760
4761## WebMessage
4762
4763用于描述[WebMessagePort](#webmessageport)所支持的数据类型。
4764
4765**系统能力:** SystemCapability.Web.Webview.Core
4766
4767| 类型       | 说明                                     |
4768| -------- | -------------------------------------- |
4769| string   | 字符串类型数据。 |
4770| ArrayBuffer   | 二进制类型数据。 |
4771
4772## WebStorageOrigin
4773
4774提供Web SQL数据库的使用信息。
4775
4776**系统能力:** SystemCapability.Web.Webview.Core
4777
4778| 名称   | 类型   | 可读 | 可写 | 说明 |
4779| ------ | ------ | ---- | ---- | ---- |
4780| origin | string | 是  | 否 | 指定源的字符串索引。 |
4781| usage  | number | 是  | 否 | 指定源的存储量。     |
4782| quota  | number | 是  | 否 | 指定源的存储配额。   |
4783
4784## BackForwardList
4785
4786当前Webview的历史信息列表。
4787
4788**系统能力:** SystemCapability.Web.Webview.Core
4789
4790| 名称         | 类型   | 可读 | 可写 | 说明                                                         |
4791| ------------ | ------ | ---- | ---- | ------------------------------------------------------------ |
4792| currentIndex | number | 是   | 否   | 当前在页面历史列表中的索引。                                 |
4793| size         | number | 是   | 否   | 历史列表中索引的数量,最多保存50条,超过时起始记录会被覆盖。 |
4794
4795### getItemAtIndex
4796
4797getItemAtIndex(index: number): HistoryItem
4798
4799获取历史列表中指定索引的历史记录项信息。
4800
4801**系统能力:** SystemCapability.Web.Webview.Core
4802
4803**参数:**
4804
4805| 参数名 | 类型   | 必填 | 说明                   |
4806| ------ | ------ | ---- | ---------------------- |
4807| index  | number | 是   | 指定历史列表中的索引。 |
4808
4809**返回值:**
4810
4811| 类型                        | 说明         |
4812| --------------------------- | ------------ |
4813| [HistoryItem](#historyitem) | 历史记录项。 |
4814
4815**示例:**
4816
4817```ts
4818// xxx.ets
4819import web_webview from '@ohos.web.webview';
4820import image from "@ohos.multimedia.image"
4821
4822@Entry
4823@Component
4824struct WebComponent {
4825  controller: web_webview.WebviewController = new web_webview.WebviewController();
4826  @State icon: image.PixelMap = undefined;
4827
4828  build() {
4829    Column() {
4830      Button('getBackForwardEntries')
4831        .onClick(() => {
4832          try {
4833            let list = this.controller.getBackForwardEntries();
4834            let historyItem = list.getItemAtIndex(list.currentIndex);
4835            console.log("HistoryItem: " + JSON.stringify(historyItem));
4836            this.icon = historyItem.icon;
4837          } catch (error) {
4838            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
4839          }
4840        })
4841      Web({ src: 'www.example.com', controller: this.controller })
4842    }
4843  }
4844}
4845```
4846
4847## HistoryItem
4848
4849页面历史记录项。
4850
4851**系统能力:** SystemCapability.Web.Webview.Core
4852
4853| 名称          | 类型                                   | 可读 | 可写 | 说明                         |
4854| ------------- | -------------------------------------- | ---- | ---- | ---------------------------- |
4855| icon          | [PixelMap](js-apis-image.md#pixelmap7) | 是   | 否   | 历史页面图标的PixelMap对象。 |
4856| historyUrl    | string                                 | 是   | 否   | 历史记录项的url地址。        |
4857| historyRawUrl | string                                 | 是   | 否   | 历史记录项的原始url地址。    |
4858| title         | string                                 | 是   | 否   | 历史记录项的标题。           |
4859
4860## WebCustomScheme
4861
4862自定义协议配置。
4863
4864**系统能力:** SystemCapability.Web.Webview.Core
4865
4866| 名称           | 类型       | 可读 | 可写 | 说明                         |
4867| -------------- | --------- | ---- | ---- | ---------------------------- |
4868| schemeName     | string    | 是   | 是   | 自定义协议名称。最大长度为32,其字符仅支持小写字母、数字、'.'、'+'、'-'。        |
4869| isSupportCORS  | boolean   | 是   | 是   | 是否支持跨域请求。    |
4870| isSupportFetch | boolean   | 是   | 是   | 是否支持fetch请求。           |
4871