• 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### getTitle
1996
1997getTitle(): string
1998
1999获取当前网页的标题。
2000
2001**系统能力:** SystemCapability.Web.Webview.Core
2002
2003**返回值:**
2004
2005| 类型   | 说明                 |
2006| ------ | -------------------- |
2007| string | 当前网页的标题。 |
2008
2009**错误码:**
2010
2011以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2012
2013| 错误码ID | 错误信息                                                     |
2014| -------- | ------------------------------------------------------------ |
2015| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2016
2017**示例:**
2018
2019```ts
2020// xxx.ets
2021import web_webview from '@ohos.web.webview';
2022
2023@Entry
2024@Component
2025struct WebComponent {
2026  controller: web_webview.WebviewController = new web_webview.WebviewController();
2027
2028  build() {
2029    Column() {
2030      Button('getTitle')
2031        .onClick(() => {
2032          try {
2033            let title = this.controller.getTitle();
2034            console.log("title: " + title);
2035          } catch (error) {
2036            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2037          }
2038        })
2039      Web({ src: 'www.example.com', controller: this.controller })
2040    }
2041  }
2042}
2043```
2044
2045### getPageHeight
2046
2047getPageHeight(): number
2048
2049获取当前网页的页面高度。
2050
2051**系统能力:** SystemCapability.Web.Webview.Core
2052
2053**返回值:**
2054
2055| 类型   | 说明                 |
2056| ------ | -------------------- |
2057| number | 当前网页的页面高度。 |
2058
2059**错误码:**
2060
2061以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2062
2063| 错误码ID | 错误信息                                                     |
2064| -------- | ------------------------------------------------------------ |
2065| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2066
2067**示例:**
2068
2069```ts
2070// xxx.ets
2071import web_webview from '@ohos.web.webview';
2072
2073@Entry
2074@Component
2075struct WebComponent {
2076  controller: web_webview.WebviewController = new web_webview.WebviewController();
2077
2078  build() {
2079    Column() {
2080      Button('getPageHeight')
2081        .onClick(() => {
2082          try {
2083            let pageHeight = this.controller.getPageHeight();
2084            console.log("pageHeight : " + pageHeight);
2085          } catch (error) {
2086            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2087          }
2088        })
2089      Web({ src: 'www.example.com', controller: this.controller })
2090    }
2091  }
2092}
2093```
2094
2095### storeWebArchive
2096
2097storeWebArchive(baseName: string, autoName: boolean, callback: AsyncCallback\<string>): void
2098
2099以回调方式异步保存当前页面。
2100
2101**系统能力:** SystemCapability.Web.Webview.Core
2102
2103**参数:**
2104
2105| 参数名   | 类型              | 必填 | 说明                                                         |
2106| -------- | --------------------- | ---- | ------------------------------------------------------------ |
2107| baseName | string                | 是   | 文件存储路径,该值不能为空。                                 |
2108| autoName | boolean               | 是   | 决定是否自动生成文件名。 如果为false,则将baseName作为文件存储路径。 如果为true,则假定baseName是一个目录,将根据当前页的Url自动生成文件名。 |
2109| callback | AsyncCallback\<string> | 是   | 返回文件存储路径,保持网页失败会返回null。                   |
2110
2111**错误码:**
2112
2113以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2114
2115| 错误码ID | 错误信息                                                     |
2116| -------- | ------------------------------------------------------------ |
2117| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2118| 17100003 | Invalid resource path or file type.                          |
2119
2120**示例:**
2121
2122```ts
2123// xxx.ets
2124import web_webview from '@ohos.web.webview'
2125
2126@Entry
2127@Component
2128struct WebComponent {
2129  controller: web_webview.WebviewController = new web_webview.WebviewController();
2130
2131  build() {
2132    Column() {
2133      Button('saveWebArchive')
2134        .onClick(() => {
2135          try {
2136            this.controller.storeWebArchive("/data/storage/el2/base/", true, (error, filename) => {
2137              if (error) {
2138                console.info(`save web archive error: ` + JSON.stringify(error))
2139                return;
2140              }
2141              if (filename != null) {
2142                console.info(`save web archive success: ${filename}`)
2143              }
2144            });
2145          } catch (error) {
2146            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2147          }
2148        })
2149      Web({ src: 'www.example.com', controller: this.controller })
2150    }
2151  }
2152}
2153```
2154
2155### storeWebArchive
2156
2157storeWebArchive(baseName: string, autoName: boolean): Promise\<string>
2158
2159以Promise方式异步保存当前页面。
2160
2161**系统能力:** SystemCapability.Web.Webview.Core
2162
2163**参数:**
2164
2165| 参数名   | 类型 | 必填 | 说明                                                         |
2166| -------- | -------- | ---- | ------------------------------------------------------------ |
2167| baseName | string   | 是   | 文件存储路径,该值不能为空。                                 |
2168| autoName | boolean  | 是   | 决定是否自动生成文件名。 如果为false,则将baseName作为文件存储路径。 如果为true,则假定baseName是一个目录,将根据当前页的Url自动生成文件名。 |
2169
2170**返回值:**
2171
2172| 类型            | 说明                                                  |
2173| --------------- | ----------------------------------------------------- |
2174| Promise\<string> | Promise实例,保存成功返回文件路径,保存失败返回null。 |
2175
2176**错误码:**
2177
2178以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2179
2180| 错误码ID | 错误信息                                                     |
2181| -------- | ------------------------------------------------------------ |
2182| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2183| 17100003 | Invalid resource path or file type.                          |
2184
2185**示例:**
2186
2187```ts
2188// xxx.ets
2189import web_webview from '@ohos.web.webview'
2190
2191@Entry
2192@Component
2193struct WebComponent {
2194  controller: web_webview.WebviewController = new web_webview.WebviewController();
2195
2196  build() {
2197    Column() {
2198      Button('saveWebArchive')
2199        .onClick(() => {
2200          try {
2201            this.controller.storeWebArchive("/data/storage/el2/base/", true)
2202              .then(filename => {
2203                if (filename != null) {
2204                  console.info(`save web archive success: ${filename}`)
2205                }
2206              })
2207              .catch(error => {
2208                console.log('error: ' + JSON.stringify(error));
2209              })
2210          } catch (error) {
2211            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2212          }
2213        })
2214      Web({ src: 'www.example.com', controller: this.controller })
2215    }
2216  }
2217}
2218```
2219
2220### getUrl
2221
2222getUrl(): string
2223
2224获取当前页面的url地址。
2225
2226**系统能力:** SystemCapability.Web.Webview.Core
2227
2228**返回值:**
2229
2230| 类型   | 说明                |
2231| ------ | ------------------- |
2232| string | 当前页面的url地址。 |
2233
2234**错误码:**
2235
2236以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2237
2238| 错误码ID | 错误信息                                                     |
2239| -------- | ------------------------------------------------------------ |
2240| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2241
2242**示例:**
2243
2244```ts
2245// xxx.ets
2246import web_webview from '@ohos.web.webview';
2247
2248@Entry
2249@Component
2250struct WebComponent {
2251  controller: web_webview.WebviewController = new web_webview.WebviewController();
2252
2253  build() {
2254    Column() {
2255      Button('getUrl')
2256        .onClick(() => {
2257          try {
2258            let url = this.controller.getUrl();
2259            console.log("url: " + url);
2260          } catch (error) {
2261            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2262          }
2263        })
2264      Web({ src: 'www.example.com', controller: this.controller })
2265    }
2266  }
2267}
2268```
2269
2270### stop
2271
2272stop(): void
2273
2274停止页面加载。
2275
2276**系统能力:** SystemCapability.Web.Webview.Core
2277
2278**错误码:**
2279
2280以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2281
2282| 错误码ID | 错误信息                                                     |
2283| -------- | ------------------------------------------------------------ |
2284| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2285
2286**示例:**
2287
2288```ts
2289// xxx.ets
2290import web_webview from '@ohos.web.webview';
2291
2292@Entry
2293@Component
2294struct WebComponent {
2295  controller: web_webview.WebviewController = new web_webview.WebviewController();
2296
2297  build() {
2298    Column() {
2299      Button('stop')
2300        .onClick(() => {
2301          try {
2302            this.controller.stop();
2303          } catch (error) {
2304            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2305          }
2306        });
2307      Web({ src: 'www.example.com', controller: this.controller })
2308    }
2309  }
2310}
2311```
2312
2313### backOrForward
2314
2315backOrForward(step: number): void
2316
2317按照历史栈,前进或者后退指定步长的页面,当历史栈中不存在对应步长的页面时,不会进行页面跳转。
2318
2319**系统能力:** SystemCapability.Web.Webview.Core
2320
2321**参数:**
2322
2323| 参数名 | 类型 | 必填 | 说明               |
2324| ------ | -------- | ---- | ---------------------- |
2325| step   | number   | 是   | 需要前进或后退的步长。 |
2326
2327**错误码:**
2328
2329以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2330
2331| 错误码ID | 错误信息                                                     |
2332| -------- | ------------------------------------------------------------ |
2333| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2334
2335**示例:**
2336
2337```ts
2338// xxx.ets
2339import web_webview from '@ohos.web.webview';
2340
2341@Entry
2342@Component
2343struct WebComponent {
2344  controller: web_webview.WebviewController = new web_webview.WebviewController();
2345  @State step: number = -2;
2346
2347  build() {
2348    Column() {
2349      Button('backOrForward')
2350        .onClick(() => {
2351          try {
2352            this.controller.backOrForward(this.step);
2353          } catch (error) {
2354            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2355          }
2356        })
2357      Web({ src: 'www.example.com', controller: this.controller })
2358    }
2359  }
2360}
2361```
2362
2363### scrollTo
2364
2365scrollTo(x:number, y:number): void
2366
2367将页面滚动到指定的绝对位置。
2368
2369**系统能力:** SystemCapability.Web.Webview.Core
2370
2371**参数:**
2372
2373| 参数名 | 类型 | 必填 | 说明               |
2374| ------ | -------- | ---- | ---------------------- |
2375| x   | number   | 是   | 绝对位置的水平坐标,当传入数值为负数时,按照传入0处理。 |
2376| y   | number   | 是   | 绝对位置的垂直坐标,当传入数值为负数时,按照传入0处理。|
2377
2378**错误码:**
2379
2380以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2381
2382| 错误码ID | 错误信息                                                     |
2383| -------- | ------------------------------------------------------------ |
2384| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2385
2386**示例:**
2387
2388```ts
2389// xxx.ets
2390import web_webview from '@ohos.web.webview';
2391
2392@Entry
2393@Component
2394struct WebComponent {
2395  controller: web_webview.WebviewController = new web_webview.WebviewController();
2396
2397  build() {
2398    Column() {
2399      Button('scrollTo')
2400        .onClick(() => {
2401          try {
2402            this.controller.scrollTo(50, 50);
2403          } catch (error) {
2404            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2405          }
2406        })
2407      Web({ src: 'www.example.com', controller: this.controller })
2408    }
2409  }
2410}
2411```
2412
2413```html
2414<!--xxx.html-->
2415<!DOCTYPE html>
2416<html>
2417<head>
2418    <title>Demo</title>
2419    <style>
2420        body {
2421            width:3000px;
2422            height:3000px;
2423            padding-right:170px;
2424            padding-left:170px;
2425            border:5px solid blueviolet
2426        }
2427    </style>
2428</head>
2429<body>
2430Scroll Test
2431</body>
2432</html>
2433```
2434
2435### scrollBy
2436
2437scrollBy(deltaX:number, deltaY:number): void
2438
2439将页面滚动指定的偏移量。
2440
2441**系统能力:** SystemCapability.Web.Webview.Core
2442
2443**参数:**
2444
2445| 参数名 | 类型 | 必填 | 说明               |
2446| ------ | -------- | ---- | ---------------------- |
2447| deltaX | number   | 是   | 水平偏移量,其中水平向右为正方向。 |
2448| deltaY | number   | 是   | 垂直偏移量,其中垂直向下为正方向。 |
2449
2450**错误码:**
2451
2452以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2453
2454| 错误码ID | 错误信息                                                     |
2455| -------- | ------------------------------------------------------------ |
2456| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2457
2458**示例:**
2459
2460```ts
2461// xxx.ets
2462import web_webview from '@ohos.web.webview';
2463
2464@Entry
2465@Component
2466struct WebComponent {
2467  controller: web_webview.WebviewController = new web_webview.WebviewController();
2468
2469  build() {
2470    Column() {
2471      Button('scrollBy')
2472        .onClick(() => {
2473          try {
2474            this.controller.scrollBy(50, 50);
2475          } catch (error) {
2476            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2477          }
2478        })
2479      Web({ src: 'www.example.com', controller: this.controller })
2480    }
2481  }
2482}
2483```
2484
2485```html
2486<!--xxx.html-->
2487<!DOCTYPE html>
2488<html>
2489<head>
2490    <title>Demo</title>
2491    <style>
2492        body {
2493            width:3000px;
2494            height:3000px;
2495            padding-right:170px;
2496            padding-left:170px;
2497            border:5px solid blueviolet
2498        }
2499    </style>
2500</head>
2501<body>
2502Scroll Test
2503</body>
2504</html>
2505```
2506
2507### slideScroll
2508
2509slideScroll(vx:number, vy:number): void
2510
2511按照指定速度模拟对页面的轻扫滚动动作。
2512
2513**系统能力:** SystemCapability.Web.Webview.Core
2514
2515**参数:**
2516
2517| 参数名 | 类型 | 必填 | 说明               |
2518| ------ | -------- | ---- | ---------------------- |
2519| vx     | number   | 是   | 轻扫滚动的水平速度分量,其中水平向右为速度正方向。 |
2520| vy     | number   | 是   | 轻扫滚动的垂直速度分量,其中垂直向下为速度正方向。 |
2521
2522**错误码:**
2523
2524以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2525
2526| 错误码ID | 错误信息                                                     |
2527| -------- | ------------------------------------------------------------ |
2528| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2529
2530**示例:**
2531
2532```ts
2533// xxx.ets
2534import web_webview from '@ohos.web.webview';
2535
2536@Entry
2537@Component
2538struct WebComponent {
2539  controller: web_webview.WebviewController = new web_webview.WebviewController();
2540
2541  build() {
2542    Column() {
2543      Button('slideScroll')
2544        .onClick(() => {
2545          try {
2546            this.controller.slideScroll(500, 500);
2547          } catch (error) {
2548            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2549          }
2550        })
2551      Web({ src: 'www.example.com', controller: this.controller })
2552    }
2553  }
2554}
2555```
2556
2557```html
2558<!--xxx.html-->
2559<!DOCTYPE html>
2560<html>
2561<head>
2562    <title>Demo</title>
2563    <style>
2564        body {
2565            width:3000px;
2566            height:3000px;
2567            padding-right:170px;
2568            padding-left:170px;
2569            border:5px solid blueviolet
2570        }
2571    </style>
2572</head>
2573<body>
2574Scroll Test
2575</body>
2576</html>
2577```
2578
2579### getOriginalUrl
2580
2581getOriginalUrl(): string
2582
2583获取当前页面的原始url地址。
2584
2585**系统能力:** SystemCapability.Web.Webview.Core
2586
2587**返回值:**
2588
2589| 类型   | 说明                    |
2590| ------ | ----------------------- |
2591| string | 当前页面的原始url地址。 |
2592
2593**错误码:**
2594
2595以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2596
2597| 错误码ID | 错误信息                                                     |
2598| -------- | ------------------------------------------------------------ |
2599| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2600
2601**示例:**
2602
2603```ts
2604// xxx.ets
2605import web_webview from '@ohos.web.webview';
2606
2607@Entry
2608@Component
2609struct WebComponent {
2610  controller: web_webview.WebviewController = new web_webview.WebviewController();
2611
2612  build() {
2613    Column() {
2614      Button('getOrgUrl')
2615        .onClick(() => {
2616          try {
2617            let url = this.controller.getOriginalUrl();
2618            console.log("original url: " + url);
2619          } catch (error) {
2620            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2621          }
2622        })
2623      Web({ src: 'www.example.com', controller: this.controller })
2624    }
2625  }
2626}
2627```
2628
2629### getFavicon
2630
2631getFavicon(): image.PixelMap
2632
2633获取页面的favicon图标。
2634
2635**系统能力:** SystemCapability.Web.Webview.Core
2636
2637**返回值:**
2638
2639| 类型                                   | 说明                            |
2640| -------------------------------------- | ------------------------------- |
2641| [PixelMap](js-apis-image.md#pixelmap7) | 页面favicon图标的PixelMap对象。 |
2642
2643**错误码:**
2644
2645以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2646
2647| 错误码ID | 错误信息                                                     |
2648| -------- | ------------------------------------------------------------ |
2649| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2650
2651**示例:**
2652
2653```ts
2654// xxx.ets
2655import web_webview from '@ohos.web.webview';
2656import image from "@ohos.multimedia.image"
2657@Entry
2658@Component
2659struct WebComponent {
2660  controller: web_webview.WebviewController = new web_webview.WebviewController();
2661    @State pixelmap: image.PixelMap = undefined;
2662
2663  build() {
2664    Column() {
2665      Button('getFavicon')
2666        .onClick(() => {
2667          try {
2668            this.pixelmap = this.controller.getFavicon();
2669          } catch (error) {
2670            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2671          }
2672        })
2673      Web({ src: 'www.example.com', controller: this.controller })
2674    }
2675  }
2676}
2677```
2678
2679### setNetworkAvailable
2680
2681setNetworkAvailable(enable: boolean): void
2682
2683设置JavaScript中的window.navigator.onLine属性。
2684
2685**系统能力:** SystemCapability.Web.Webview.Core
2686
2687**参数:**
2688
2689| 参数名 | 类型    | 必填 | 说明                              |
2690| ------ | ------- | ---- | --------------------------------- |
2691| enable | boolean | 是   | 是否使能window.navigator.onLine。 |
2692
2693**错误码:**
2694
2695以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2696
2697| 错误码ID | 错误信息                                                     |
2698| -------- | ------------------------------------------------------------ |
2699| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2700
2701**示例:**
2702
2703```ts
2704// xxx.ets
2705import web_webview from '@ohos.web.webview';
2706
2707@Entry
2708@Component
2709struct WebComponent {
2710  controller: web_webview.WebviewController = new web_webview.WebviewController();
2711
2712  build() {
2713    Column() {
2714      Button('setNetworkAvailable')
2715        .onClick(() => {
2716          try {
2717            this.controller.setNetworkAvailable(true);
2718          } catch (error) {
2719            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2720          }
2721        })
2722      Web({ src: 'www.example.com', controller: this.controller })
2723    }
2724  }
2725}
2726```
2727
2728### hasImage
2729
2730hasImage(callback: AsyncCallback\<boolean>): void
2731
2732通过Callback方式异步查找当前页面是否存在图像。
2733
2734**系统能力:** SystemCapability.Web.Webview.Core
2735
2736**参数:**
2737
2738| 参数名   | 类型                    | 必填 | 说明                       |
2739| -------- | ----------------------- | ---- | -------------------------- |
2740| callback | AsyncCallback\<boolean> | 是   | 返回查找页面是否存在图像。 |
2741
2742**错误码:**
2743
2744以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2745
2746| 错误码ID | 错误信息                                                     |
2747| -------- | ------------------------------------------------------------ |
2748| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
2749
2750**示例:**
2751
2752```ts
2753// xxx.ets
2754import web_webview from '@ohos.web.webview';
2755
2756@Entry
2757@Component
2758struct WebComponent {
2759  controller: web_webview.WebviewController = new web_webview.WebviewController();
2760
2761  build() {
2762    Column() {
2763      Button('hasImageCb')
2764        .onClick(() => {
2765          try {
2766            this.controller.hasImage((error, data) => {
2767                if (error) {
2768                  console.info(`hasImage error: ` + JSON.stringify(error))
2769                  return;
2770                }
2771                console.info("hasImage: " + data);
2772              });
2773          } catch (error) {
2774            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2775          }
2776        })
2777      Web({ src: 'www.example.com', controller: this.controller })
2778    }
2779  }
2780}
2781```
2782
2783### hasImage
2784
2785hasImage(): Promise\<boolean>
2786
2787通过Promise方式异步查找当前页面是否存在图像。
2788
2789**系统能力:** SystemCapability.Web.Webview.Core
2790
2791**返回值:**
2792
2793| 类型              | 说明                                    |
2794| ----------------- | --------------------------------------- |
2795| Promise\<boolean> | Promise实例,返回查找页面是否存在图像。 |
2796
2797**错误码:**
2798
2799以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2800
2801| 错误码ID | 错误信息                                                     |
2802| -------- | ------------------------------------------------------------ |
2803| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
2804
2805**示例:**
2806
2807```ts
2808// xxx.ets
2809import web_webview from '@ohos.web.webview';
2810
2811@Entry
2812@Component
2813struct WebComponent {
2814  controller: web_webview.WebviewController = new web_webview.WebviewController();
2815
2816  build() {
2817    Column() {
2818      Button('hasImagePm')
2819        .onClick(() => {
2820          try {
2821            this.controller.hasImage().then((data) => {
2822                console.info('hasImage: ' + data);
2823              })
2824              .catch(function (error) {
2825                console.error("error: " + error);
2826              })
2827          } catch (error) {
2828            console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
2829          }
2830        })
2831      Web({ src: 'www.example.com', controller: this.controller })
2832    }
2833  }
2834}
2835```
2836
2837### removeCache
2838
2839removeCache(clearRom: boolean): void
2840
2841清除应用中的资源缓存文件,此方法将会清除同一应用中所有webview的缓存文件。
2842
2843**系统能力:** SystemCapability.Web.Webview.Core
2844
2845**参数:**
2846
2847| 参数名   | 类型    | 必填 | 说明                                                     |
2848| -------- | ------- | ---- | -------------------------------------------------------- |
2849| clearRom | boolean | 是   | 设置为true时同时清除rom和ram中的缓存,设置为false时只清除ram中的缓存。 |
2850
2851**错误码:**
2852
2853以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2854
2855| 错误码ID | 错误信息                                                     |
2856| -------- | ------------------------------------------------------------ |
2857| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2858
2859**示例:**
2860
2861```ts
2862// xxx.ets
2863import web_webview from '@ohos.web.webview';
2864
2865@Entry
2866@Component
2867struct WebComponent {
2868  controller: web_webview.WebviewController = new web_webview.WebviewController();
2869
2870  build() {
2871    Column() {
2872      Button('removeCache')
2873        .onClick(() => {
2874          try {
2875            this.controller.removeCache(false);
2876          } catch (error) {
2877            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2878          }
2879        })
2880      Web({ src: 'www.example.com', controller: this.controller })
2881    }
2882  }
2883}
2884```
2885
2886### pageUp
2887
2888pageUp(top:boolean): void
2889
2890将Webview的内容向上滚动半个视框大小或者跳转到页面最顶部,通过top入参控制。
2891
2892**系统能力:** SystemCapability.Web.Webview.Core
2893
2894**参数:**
2895
2896| 参数名 | 类型    | 必填 | 说明                                                         |
2897| ------ | ------- | ---- | ------------------------------------------------------------ |
2898| top    | boolean | 是   | 是否跳转到页面最顶部,设置为false时将页面内容向上滚动半个视框大小,设置为true时跳转到页面最顶部。 |
2899
2900**错误码:**
2901
2902以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2903
2904| 错误码ID | 错误信息                                                     |
2905| -------- | ------------------------------------------------------------ |
2906| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2907
2908**示例:**
2909
2910```ts
2911// xxx.ets
2912import web_webview from '@ohos.web.webview';
2913
2914@Entry
2915@Component
2916struct WebComponent {
2917  controller: web_webview.WebviewController = new web_webview.WebviewController();
2918
2919  build() {
2920    Column() {
2921      Button('pageUp')
2922        .onClick(() => {
2923          try {
2924            this.controller.pageUp(false);
2925          } catch (error) {
2926            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2927          }
2928        })
2929      Web({ src: 'www.example.com', controller: this.controller })
2930    }
2931  }
2932}
2933```
2934
2935### pageDown
2936
2937pageDown(bottom:boolean): void
2938
2939将Webview的内容向下滚动半个视框大小或者跳转到页面最底部,通过bottom入参控制。
2940
2941**系统能力:** SystemCapability.Web.Webview.Core
2942
2943**参数:**
2944
2945| 参数名 | 类型    | 必填 | 说明                                                         |
2946| ------ | ------- | ---- | ------------------------------------------------------------ |
2947| bottom | boolean | 是   | 是否跳转到页面最底部,设置为false时将页面内容向下滚动半个视框大小,设置为true时跳转到页面最底部。 |
2948
2949**错误码:**
2950
2951以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
2952
2953| 错误码ID | 错误信息                                                     |
2954| -------- | ------------------------------------------------------------ |
2955| 17100001 | Init error. The WebviewController must be associated with a Web component. |
2956
2957**示例:**
2958
2959```ts
2960// xxx.ets
2961import web_webview from '@ohos.web.webview';
2962
2963@Entry
2964@Component
2965struct WebComponent {
2966  controller: web_webview.WebviewController = new web_webview.WebviewController();
2967
2968  build() {
2969    Column() {
2970      Button('pageDown')
2971        .onClick(() => {
2972          try {
2973            this.controller.pageDown(false);
2974          } catch (error) {
2975            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
2976          }
2977        })
2978      Web({ src: 'www.example.com', controller: this.controller })
2979    }
2980  }
2981}
2982```
2983
2984### getBackForwardEntries
2985
2986getBackForwardEntries(): BackForwardList
2987
2988获取当前Webview的历史信息列表。
2989
2990**系统能力:** SystemCapability.Web.Webview.Core
2991
2992**返回值:**
2993
2994| 类型                                | 说明                        |
2995| ----------------------------------- | --------------------------- |
2996| [BackForwardList](#backforwardlist) | 当前Webview的历史信息列表。 |
2997
2998**错误码:**
2999
3000以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3001
3002| 错误码ID | 错误信息                                                     |
3003| -------- | ------------------------------------------------------------ |
3004| 17100001 | Init error. The WebviewController must be associated with a Web component. |
3005
3006**示例:**
3007
3008```ts
3009// xxx.ets
3010import web_webview from '@ohos.web.webview';
3011
3012@Entry
3013@Component
3014struct WebComponent {
3015  controller: web_webview.WebviewController = new web_webview.WebviewController();
3016
3017  build() {
3018    Column() {
3019      Button('getBackForwardEntries')
3020        .onClick(() => {
3021          try {
3022            let list = this.controller.getBackForwardEntries()
3023          } catch (error) {
3024            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3025          }
3026        })
3027      Web({ src: 'www.example.com', controller: this.controller })
3028    }
3029  }
3030}
3031```
3032
3033### serializeWebState
3034
3035serializeWebState(): Uint8Array
3036
3037将当前Webview的页面状态历史记录信息序列化。
3038
3039**系统能力:** SystemCapability.Web.Webview.Core
3040
3041**返回值:**
3042
3043| 类型       | 说明                                          |
3044| ---------- | --------------------------------------------- |
3045| Uint8Array | 当前Webview的页面状态历史记录序列化后的数据。 |
3046
3047**错误码:**
3048
3049以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3050
3051| 错误码ID | 错误信息                                                     |
3052| -------- | ------------------------------------------------------------ |
3053| 17100001 | Init error. The WebviewController must be associated with a Web component. |
3054
3055**示例:**
3056
3057```ts
3058// xxx.ets
3059import web_webview from '@ohos.web.webview';
3060import fileio from '@ohos.fileio';
3061
3062@Entry
3063@Component
3064struct WebComponent {
3065  controller: web_webview.WebviewController = new web_webview.WebviewController();
3066
3067  build() {
3068    Column() {
3069      Button('serializeWebState')
3070        .onClick(() => {
3071          try {
3072            let state = this.controller.serializeWebState();
3073            let path = globalThis.AbilityContext.cacheDir;
3074            path += '/WebState';
3075            let fd = fileio.openSync(path, 0o2 | 0o100, 0o666);
3076            fileio.writeSync(fd, state.buffer);
3077            fileio.closeSync(fd);
3078          } catch (error) {
3079            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3080          }
3081        })
3082      Web({ src: 'www.example.com', controller: this.controller })
3083    }
3084  }
3085}
3086```
3087
3088### restoreWebState
3089
3090restoreWebState(state: Uint8Array): void
3091
3092当前Webview从序列化数据中恢复页面状态历史记录。
3093
3094**系统能力:** SystemCapability.Web.Webview.Core
3095
3096**参数:**
3097
3098| 参数名 | 类型       | 必填 | 说明                         |
3099| ------ | ---------- | ---- | ---------------------------- |
3100| state  | Uint8Array | 是   | 页面状态历史记录序列化数据。 |
3101
3102**错误码:**
3103
3104以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3105
3106| 错误码ID | 错误信息                                                     |
3107| -------- | ------------------------------------------------------------ |
3108| 17100001 | Init error. The WebviewController must be associated with a Web component. |
3109
3110**示例:**
3111
3112```ts
3113// xxx.ets
3114import web_webview from '@ohos.web.webview';
3115import fileio from '@ohos.fileio';
3116
3117@Entry
3118@Component
3119struct WebComponent {
3120  controller: web_webview.WebviewController = new web_webview.WebviewController();
3121
3122  build() {
3123    Column() {
3124      Button('RestoreWebState')
3125        .onClick(() => {
3126          try {
3127            let path = globalThis.AbilityContext.cacheDir;
3128            path += '/WebState';
3129            let fd = fileio.openSync(path, 0o002, 0o666);
3130            let stat = fileio.fstatSync(fd);
3131            let size = stat.size;
3132            let buf = new ArrayBuffer(size);
3133            fileio.read(fd, buf, (err, data) => {
3134              if (data) {
3135                this.controller.restoreWebState(new Uint8Array(data.buffer));
3136              }
3137              fileio.closeSync(fd);
3138            });
3139          } catch (error) {
3140            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3141          }
3142        })
3143      Web({ src: 'www.example.com', controller: this.controller })
3144    }
3145  }
3146}
3147```
3148
3149### customizeSchemes
3150
3151static customizeSchemes(schemes: Array\<WebCustomScheme\>): void
3152
3153配置Web自定义协议请求的权限。建议在任何Web组件初始化之前进行调用。
3154
3155**系统能力:** SystemCapability.Web.Webview.Core
3156
3157**参数:**
3158
3159| 参数名   | 类型    | 必填 | 说明                      |
3160| -------- | ------- | ---- | -------------------------------------- |
3161| schemes | Array\<[WebCustomScheme](#webcustomscheme)\> | 是   | 自定义协议配置,最多支持同时配置10个自定义协议。 |
3162
3163**示例:**
3164
3165```ts
3166// xxx.ets
3167import web_webview from '@ohos.web.webview';
3168
3169@Entry
3170@Component
3171struct WebComponent {
3172  controller: web_webview.WebviewController = new web_webview.WebviewController();
3173  responseweb: WebResourceResponse = new WebResourceResponse()
3174  scheme1: web_webview.WebCustomScheme = {schemeName: "name1", isSupportCORS: true, isSupportFetch: true}
3175  scheme2: web_webview.WebCustomScheme = {schemeName: "name2", isSupportCORS: true, isSupportFetch: true}
3176  scheme3: web_webview.WebCustomScheme = {schemeName: "name3", isSupportCORS: true, isSupportFetch: true}
3177
3178  aboutToAppear():void {
3179    try {
3180      web_webview.WebviewController.customizeSchemes([this.scheme1, this.scheme2, this.scheme3])
3181    } catch(error) {
3182      console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3183    }
3184  }
3185
3186  build() {
3187    Column() {
3188      Web({ src: 'www.example.com', controller: this.controller })
3189        .onInterceptRequest((event) => {
3190          console.log('url:' + event.request.getRequestUrl())
3191          return this.responseweb
3192        })
3193    }
3194  }
3195}
3196```
3197
3198## WebCookieManager
3199
3200通过WebCookie可以控制Web组件中的cookie的各种行为,其中每个应用中的所有web组件共享一个WebCookieManager实例。
3201
3202###  getCookie
3203
3204static getCookie(url: string): string
3205
3206获取指定url对应cookie的值。
3207
3208**系统能力:** SystemCapability.Web.Webview.Core
3209
3210**参数:**
3211
3212| 参数名 | 类型   | 必填 | 说明                      |
3213| ------ | ------ | ---- | :------------------------ |
3214| url    | string | 是   | 要获取的cookie所属的url,建议使用完整的url。 |
3215
3216**返回值:**
3217
3218| 类型   | 说明                      |
3219| ------ | ------------------------- |
3220| string | 指定url对应的cookie的值。 |
3221
3222**错误码:**
3223
3224以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3225
3226| 错误码ID | 错误信息                                               |
3227| -------- | ------------------------------------------------------ |
3228| 17100002 | Invalid url.                                           |
3229
3230**示例:**
3231
3232```ts
3233// xxx.ets
3234import web_webview from '@ohos.web.webview'
3235
3236@Entry
3237@Component
3238struct WebComponent {
3239  controller: web_webview.WebviewController = new web_webview.WebviewController();
3240
3241  build() {
3242    Column() {
3243      Button('getCookie')
3244        .onClick(() => {
3245          try {
3246            let value = web_webview.WebCookieManager.getCookie('https://www.example.com');
3247            console.log("value: " + value);
3248          } catch (error) {
3249            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3250          }
3251        })
3252      Web({ src: 'www.example.com', controller: this.controller })
3253    }
3254  }
3255}
3256```
3257
3258###  setCookie
3259
3260static setCookie(url: string, value: string): void
3261
3262为指定url设置单个cookie的值。
3263
3264**系统能力:** SystemCapability.Web.Webview.Core
3265
3266**参数:**
3267
3268| 参数名 | 类型   | 必填 | 说明                      |
3269| ------ | ------ | ---- | :------------------------ |
3270| url    | string | 是   | 要设置的cookie所属的url,建议使用完整的url。 |
3271| value  | string | 是   | 要设置的cookie的值。      |
3272
3273**错误码:**
3274
3275以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3276
3277| 错误码ID | 错误信息                                               |
3278| -------- | ------------------------------------------------------ |
3279| 17100002 | Invalid url.                                           |
3280| 17100005 | Invalid cookie value.                                  |
3281
3282**示例:**
3283
3284```ts
3285// xxx.ets
3286import web_webview from '@ohos.web.webview'
3287
3288@Entry
3289@Component
3290struct WebComponent {
3291  controller: web_webview.WebviewController = new web_webview.WebviewController();
3292
3293  build() {
3294    Column() {
3295      Button('setCookie')
3296        .onClick(() => {
3297          try {
3298            web_webview.WebCookieManager.setCookie('https://www.example.com', 'a=b');
3299          } catch (error) {
3300            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3301          }
3302        })
3303      Web({ src: 'www.example.com', controller: this.controller })
3304    }
3305  }
3306}
3307```
3308
3309###  saveCookieAsync
3310
3311static saveCookieAsync(callback: AsyncCallback\<void>): void
3312
3313将当前存在内存中的cookie异步保存到磁盘中。
3314
3315**系统能力:** SystemCapability.Web.Webview.Core
3316
3317**参数:**
3318
3319| 参数名   | 类型                   | 必填 | 说明                                               |
3320| -------- | ---------------------- | ---- | :------------------------------------------------- |
3321| callback | AsyncCallback\<void> | 是   | 返回cookie是否成功保存的布尔值作为回调函数的入参。 |
3322
3323
3324**示例:**
3325
3326```ts
3327// xxx.ets
3328import web_webview from '@ohos.web.webview'
3329
3330@Entry
3331@Component
3332struct WebComponent {
3333  controller: web_webview.WebviewController = new web_webview.WebviewController();
3334
3335  build() {
3336    Column() {
3337      Button('saveCookieAsync')
3338        .onClick(() => {
3339          try {
3340            web_webview.WebCookieManager.saveCookieAsync((error) => {
3341              if (error) {
3342                console.log("error: " + error);
3343              }
3344            })
3345          } catch (error) {
3346            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3347          }
3348        })
3349      Web({ src: 'www.example.com', controller: this.controller })
3350    }
3351  }
3352}
3353```
3354
3355###  saveCookieAsync
3356
3357static saveCookieAsync(): Promise\<void>
3358
3359将当前存在内存中的cookie以Promise方法异步保存到磁盘中。
3360
3361**系统能力:** SystemCapability.Web.Webview.Core
3362
3363**返回值:**
3364
3365| 类型             | 说明                                      |
3366| ---------------- | ----------------------------------------- |
3367| Promise\<void> | Promise实例,用于获取cookie是否成功保存。 |
3368
3369**示例:**
3370
3371```ts
3372// xxx.ets
3373import web_webview from '@ohos.web.webview'
3374
3375@Entry
3376@Component
3377struct WebComponent {
3378  controller: web_webview.WebviewController = new web_webview.WebviewController();
3379
3380  build() {
3381    Column() {
3382      Button('saveCookieAsync')
3383        .onClick(() => {
3384          try {
3385            web_webview.WebCookieManager.saveCookieAsync()
3386              .then(() => {
3387                console.log("saveCookieAsyncCallback success!");
3388              })
3389              .catch((error) => {
3390                console.error("error: " + error);
3391              });
3392          } catch (error) {
3393            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3394          }
3395        })
3396      Web({ src: 'www.example.com', controller: this.controller })
3397    }
3398  }
3399}
3400```
3401
3402###  putAcceptCookieEnabled
3403
3404static putAcceptCookieEnabled(accept: boolean): void
3405
3406设置WebCookieManager实例是否拥有发送和接收cookie的权限。
3407
3408**系统能力:** SystemCapability.Web.Webview.Core
3409
3410**参数:**
3411
3412| 参数名 | 类型    | 必填 | 说明                                 |
3413| ------ | ------- | ---- | :----------------------------------- |
3414| accept | boolean | 是   | 设置是否拥有发送和接收cookie的权限。 |
3415
3416**示例:**
3417
3418```ts
3419// xxx.ets
3420import web_webview from '@ohos.web.webview'
3421
3422@Entry
3423@Component
3424struct WebComponent {
3425  controller: web_webview.WebviewController = new web_webview.WebviewController();
3426
3427  build() {
3428    Column() {
3429      Button('putAcceptCookieEnabled')
3430        .onClick(() => {
3431          try {
3432            web_webview.WebCookieManager.putAcceptCookieEnabled(false);
3433          } catch (error) {
3434            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3435          }
3436        })
3437      Web({ src: 'www.example.com', controller: this.controller })
3438    }
3439  }
3440}
3441```
3442
3443###  isCookieAllowed
3444
3445static isCookieAllowed(): boolean
3446
3447获取WebCookieManager实例是否拥有发送和接收cookie的权限。
3448
3449**系统能力:** SystemCapability.Web.Webview.Core
3450
3451**返回值:**
3452
3453| 类型    | 说明                             |
3454| ------- | -------------------------------- |
3455| boolean | 是否拥有发送和接收cookie的权限,默认为true。 |
3456
3457**示例:**
3458
3459```ts
3460// xxx.ets
3461import web_webview from '@ohos.web.webview'
3462
3463@Entry
3464@Component
3465struct WebComponent {
3466  controller: web_webview.WebviewController = new web_webview.WebviewController();
3467
3468  build() {
3469    Column() {
3470      Button('isCookieAllowed')
3471        .onClick(() => {
3472          let result = web_webview.WebCookieManager.isCookieAllowed();
3473          console.log("result: " + result);
3474        })
3475      Web({ src: 'www.example.com', controller: this.controller })
3476    }
3477  }
3478}
3479```
3480
3481###  putAcceptThirdPartyCookieEnabled
3482
3483static putAcceptThirdPartyCookieEnabled(accept: boolean): void
3484
3485设置WebCookieManager实例是否拥有发送和接收第三方cookie的权限。
3486
3487**系统能力:** SystemCapability.Web.Webview.Core
3488
3489**参数:**
3490
3491| 参数名 | 类型    | 必填 | 说明                                       |
3492| ------ | ------- | ---- | :----------------------------------------- |
3493| accept | boolean | 是   | 设置是否拥有发送和接收第三方cookie的权限。 |
3494
3495**示例:**
3496
3497```ts
3498// xxx.ets
3499import web_webview from '@ohos.web.webview'
3500
3501@Entry
3502@Component
3503struct WebComponent {
3504  controller: web_webview.WebviewController = new web_webview.WebviewController();
3505
3506  build() {
3507    Column() {
3508      Button('putAcceptThirdPartyCookieEnabled')
3509        .onClick(() => {
3510          try {
3511            web_webview.WebCookieManager.putAcceptThirdPartyCookieEnabled(false);
3512          } catch (error) {
3513            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
3514          }
3515        })
3516      Web({ src: 'www.example.com', controller: this.controller })
3517    }
3518  }
3519}
3520```
3521
3522###  isThirdPartyCookieAllowed
3523
3524static isThirdPartyCookieAllowed(): boolean
3525
3526获取WebCookieManager实例是否拥有发送和接收第三方cookie的权限。
3527
3528**系统能力:** SystemCapability.Web.Webview.Core
3529
3530**返回值:**
3531
3532| 类型    | 说明                                   |
3533| ------- | -------------------------------------- |
3534| boolean | 是否拥有发送和接收第三方cookie的权限,默认为false。 |
3535
3536**示例:**
3537
3538```ts
3539// xxx.ets
3540import web_webview from '@ohos.web.webview'
3541
3542@Entry
3543@Component
3544struct WebComponent {
3545  controller: web_webview.WebviewController = new web_webview.WebviewController();
3546
3547  build() {
3548    Column() {
3549      Button('isThirdPartyCookieAllowed')
3550        .onClick(() => {
3551          let result = web_webview.WebCookieManager.isThirdPartyCookieAllowed();
3552          console.log("result: " + result);
3553        })
3554      Web({ src: 'www.example.com', controller: this.controller })
3555    }
3556  }
3557}
3558```
3559
3560###  existCookie
3561
3562static existCookie(): boolean
3563
3564获取是否存在cookie。
3565
3566**系统能力:** SystemCapability.Web.Webview.Core
3567
3568**返回值:**
3569
3570| 类型    | 说明                                   |
3571| ------- | -------------------------------------- |
3572| boolean | 是否拥有发送和接收第三方cookie的权限。 |
3573
3574**示例:**
3575
3576```ts
3577// xxx.ets
3578import web_webview from '@ohos.web.webview'
3579
3580@Entry
3581@Component
3582struct WebComponent {
3583  controller: web_webview.WebviewController = new web_webview.WebviewController();
3584
3585  build() {
3586    Column() {
3587      Button('existCookie')
3588        .onClick(() => {
3589          let result = web_webview.WebCookieManager.existCookie();
3590          console.log("result: " + result);
3591        })
3592      Web({ src: 'www.example.com', controller: this.controller })
3593    }
3594  }
3595}
3596```
3597
3598###  deleteEntireCookie
3599
3600static deleteEntireCookie(): void
3601
3602清除所有cookie。
3603
3604**系统能力:** SystemCapability.Web.Webview.Core
3605
3606**示例:**
3607
3608```ts
3609// xxx.ets
3610import web_webview from '@ohos.web.webview'
3611
3612@Entry
3613@Component
3614struct WebComponent {
3615  controller: web_webview.WebviewController = new web_webview.WebviewController();
3616
3617  build() {
3618    Column() {
3619      Button('deleteEntireCookie')
3620        .onClick(() => {
3621          web_webview.WebCookieManager.deleteEntireCookie();
3622        })
3623      Web({ src: 'www.example.com', controller: this.controller })
3624    }
3625  }
3626}
3627```
3628
3629###  deleteSessionCookie
3630
3631static deleteSessionCookie(): void
3632
3633清除所有会话cookie。
3634
3635**系统能力:** SystemCapability.Web.Webview.Core
3636
3637**示例:**
3638
3639```ts
3640// xxx.ets
3641import web_webview from '@ohos.web.webview'
3642
3643@Entry
3644@Component
3645struct WebComponent {
3646  controller: web_webview.WebviewController = new web_webview.WebviewController();
3647
3648  build() {
3649    Column() {
3650      Button('deleteSessionCookie')
3651        .onClick(() => {
3652          web_webview.WebCookieManager.deleteSessionCookie();
3653        })
3654      Web({ src: 'www.example.com', controller: this.controller })
3655    }
3656  }
3657}
3658```
3659
3660## WebStorage
3661
3662通过WebStorage可管理Web SQL数据库接口和HTML5 Web存储接口,每个应用中的所有Web组件共享一个WebStorage。
3663
3664### deleteOrigin
3665
3666static deleteOrigin(origin : string): void
3667
3668清除指定源所使用的存储。
3669
3670**系统能力:** SystemCapability.Web.Webview.Core
3671
3672**参数:**
3673
3674| 参数名 | 类型   | 必填 | 说明                     |
3675| ------ | ------ | ---- | ------------------------ |
3676| origin | string | 是   | 指定源的字符串索引,来自于[getOrigins](#getorigins)。 |
3677
3678**错误码:**
3679
3680以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3681
3682| 错误码ID | 错误信息                                               |
3683| -------- | ------------------------------------------------------ |
3684| 17100011 | Invalid origin.                             |
3685
3686**示例:**
3687
3688```ts
3689// xxx.ets
3690import web_webview from '@ohos.web.webview';
3691
3692@Entry
3693@Component
3694struct WebComponent {
3695  controller: web_webview.WebviewController = new web_webview.WebviewController();
3696  origin: string = "file:///";
3697
3698  build() {
3699    Column() {
3700      Button('deleteOrigin')
3701        .onClick(() => {
3702          try {
3703            web_webview.WebStorage.deleteOrigin(this.origin);
3704          } catch (error) {
3705            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
3706          }
3707
3708        })
3709      Web({ src: 'www.example.com', controller: this.controller })
3710        .databaseAccess(true)
3711    }
3712  }
3713}
3714```
3715
3716### getOrigins
3717
3718static getOrigins(callback: AsyncCallback\<Array\<WebStorageOrigin>>) : void
3719
3720以回调方式异步获取当前使用Web SQL数据库的所有源的信息。
3721
3722**系统能力:** SystemCapability.Web.Webview.Core
3723
3724**参数:**
3725
3726| 参数名   | 类型                                   | 必填 | 说明                                                   |
3727| -------- | -------------------------------------- | ---- | ------------------------------------------------------ |
3728| callback | AsyncCallback\<Array\<[WebStorageOrigin](#webstorageorigin)>> | 是   | 以数组方式返回源的信息,信息内容参考[WebStorageOrigin](#webstorageorigin)。 |
3729
3730**错误码:**
3731
3732以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3733
3734| 错误码ID | 错误信息                                               |
3735| -------- | ------------------------------------------------------ |
3736| 17100012 | Invalid web storage origin.                             |
3737
3738**示例:**
3739
3740```ts
3741// xxx.ets
3742import web_webview from '@ohos.web.webview';
3743
3744@Entry
3745@Component
3746struct WebComponent {
3747  controller: web_webview.WebviewController = new web_webview.WebviewController();
3748
3749  build() {
3750    Column() {
3751      Button('getOrigins')
3752        .onClick(() => {
3753          try {
3754            web_webview.WebStorage.getOrigins((error, origins) => {
3755              if (error) {
3756                console.log('error: ' + JSON.stringify(error));
3757                return;
3758              }
3759              for (let i = 0; i < origins.length; i++) {
3760                console.log('origin: ' + origins[i].origin);
3761                console.log('usage: ' + origins[i].usage);
3762                console.log('quota: ' + origins[i].quota);
3763              }
3764            })
3765          } catch (error) {
3766            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
3767          }
3768
3769        })
3770      Web({ src: 'www.example.com', controller: this.controller })
3771        .databaseAccess(true)
3772    }
3773  }
3774}
3775```
3776
3777### getOrigins
3778
3779static getOrigins() : Promise\<Array\<WebStorageOrigin>>
3780
3781以Promise方式异步获取当前使用Web SQL数据库的所有源的信息。
3782
3783**系统能力:** SystemCapability.Web.Webview.Core
3784
3785**返回值:**
3786
3787| 类型                             | 说明                                                         |
3788| -------------------------------- | ------------------------------------------------------------ |
3789| Promise\<Array\<[WebStorageOrigin](#webstorageorigin)>> | Promise实例,用于获取当前所有源的信息,信息内容参考[WebStorageOrigin](#webstorageorigin)。 |
3790
3791**错误码:**
3792
3793以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3794
3795| 错误码ID | 错误信息                                               |
3796| -------- | ------------------------------------------------------ |
3797| 17100012 | Invalid web storage origin.                             |
3798
3799**示例:**
3800
3801```ts
3802// xxx.ets
3803import web_webview from '@ohos.web.webview';
3804
3805@Entry
3806@Component
3807struct WebComponent {
3808  controller: web_webview.WebviewController = new web_webview.WebviewController();
3809
3810  build() {
3811    Column() {
3812      Button('getOrigins')
3813        .onClick(() => {
3814          try {
3815            web_webview.WebStorage.getOrigins()
3816              .then(origins => {
3817                for (let i = 0; i < origins.length; i++) {
3818                  console.log('origin: ' + origins[i].origin);
3819                  console.log('usage: ' + origins[i].usage);
3820                  console.log('quota: ' + origins[i].quota);
3821                }
3822              })
3823              .catch(e => {
3824                console.log('error: ' + JSON.stringify(e));
3825              })
3826          } catch (error) {
3827            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
3828          }
3829
3830        })
3831      Web({ src: 'www.example.com', controller: this.controller })
3832        .databaseAccess(true)
3833    }
3834  }
3835}
3836```
3837
3838### getOriginQuota
3839
3840static getOriginQuota(origin : string, callback : AsyncCallback\<number>) : void
3841
3842使用callback回调异步获取指定源的Web SQL数据库的存储配额,配额以字节为单位。
3843
3844**系统能力:** SystemCapability.Web.Webview.Core
3845
3846**参数:**
3847
3848| 参数名   | 类型                  | 必填 | 说明               |
3849| -------- | --------------------- | ---- | ------------------ |
3850| origin   | string                | 是   | 指定源的字符串索引 |
3851| callback | AsyncCallback\<number> | 是   | 指定源的存储配额   |
3852
3853**错误码:**
3854
3855以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3856
3857| 错误码ID | 错误信息                                               |
3858| -------- | ------------------------------------------------------ |
3859| 17100011 | Invalid origin.                             |
3860
3861**示例:**
3862
3863```ts
3864// xxx.ets
3865import web_webview from '@ohos.web.webview';
3866
3867@Entry
3868@Component
3869struct WebComponent {
3870  controller: web_webview.WebviewController = new web_webview.WebviewController();
3871  origin: string = "file:///";
3872
3873  build() {
3874    Column() {
3875      Button('getOriginQuota')
3876        .onClick(() => {
3877          try {
3878            web_webview.WebStorage.getOriginQuota(this.origin, (error, quota) => {
3879              if (error) {
3880                console.log('error: ' + JSON.stringify(error));
3881                return;
3882              }
3883              console.log('quota: ' + quota);
3884            })
3885          } catch (error) {
3886            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
3887          }
3888
3889        })
3890      Web({ src: 'www.example.com', controller: this.controller })
3891        .databaseAccess(true)
3892    }
3893  }
3894}
3895```
3896
3897### getOriginQuota
3898
3899static getOriginQuota(origin : string) : Promise\<number>
3900
3901以Promise方式异步获取指定源的Web SQL数据库的存储配额,配额以字节为单位。
3902
3903**系统能力:** SystemCapability.Web.Webview.Core
3904
3905**参数:**
3906
3907| 参数名 | 类型   | 必填 | 说明               |
3908| ------ | ------ | ---- | ------------------ |
3909| origin | string | 是   | 指定源的字符串索引 |
3910
3911**返回值:**
3912
3913| 类型            | 说明                                    |
3914| --------------- | --------------------------------------- |
3915| Promise\<number> | Promise实例,用于获取指定源的存储配额。 |
3916
3917**错误码:**
3918
3919以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3920
3921| 错误码ID | 错误信息                                               |
3922| -------- | ------------------------------------------------------ |
3923| 17100011 | Invalid origin.                             |
3924
3925**示例:**
3926
3927```ts
3928// xxx.ets
3929import web_webview from '@ohos.web.webview';
3930
3931@Entry
3932@Component
3933struct WebComponent {
3934  controller: web_webview.WebviewController = new web_webview.WebviewController();
3935  origin: string = "file:///";
3936
3937  build() {
3938    Column() {
3939      Button('getOriginQuota')
3940        .onClick(() => {
3941          try {
3942            web_webview.WebStorage.getOriginQuota(this.origin)
3943              .then(quota => {
3944                console.log('quota: ' + quota);
3945              })
3946              .catch(e => {
3947                console.log('error: ' + JSON.stringify(e));
3948              })
3949          } catch (error) {
3950            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
3951          }
3952
3953        })
3954      Web({ src: 'www.example.com', controller: this.controller })
3955        .databaseAccess(true)
3956    }
3957  }
3958}
3959```
3960
3961### getOriginUsage
3962
3963static getOriginUsage(origin : string, callback : AsyncCallback\<number>) : void
3964
3965以回调方式异步获取指定源的Web SQL数据库的存储量,存储量以字节为单位。
3966
3967**系统能力:** SystemCapability.Web.Webview.Core
3968
3969**参数:**
3970
3971| 参数名   | 类型                  | 必填 | 说明               |
3972| -------- | --------------------- | ---- | ------------------ |
3973| origin   | string                | 是   | 指定源的字符串索引 |
3974| callback | AsyncCallback\<number> | 是   | 指定源的存储量。   |
3975
3976**错误码:**
3977
3978以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
3979
3980| 错误码ID | 错误信息                                               |
3981| -------- | ------------------------------------------------------ |
3982| 17100011 | Invalid origin.                             |
3983
3984**示例:**
3985
3986```ts
3987// xxx.ets
3988import web_webview from '@ohos.web.webview';
3989
3990@Entry
3991@Component
3992struct WebComponent {
3993  controller: web_webview.WebviewController = new web_webview.WebviewController();
3994  origin: string = "file:///";
3995
3996  build() {
3997    Column() {
3998      Button('getOriginUsage')
3999        .onClick(() => {
4000          try {
4001            web_webview.WebStorage.getOriginUsage(this.origin, (error, usage) => {
4002              if (error) {
4003                console.log('error: ' + JSON.stringify(error));
4004                return;
4005              }
4006              console.log('usage: ' + usage);
4007            })
4008          } catch (error) {
4009            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4010          }
4011
4012        })
4013      Web({ src: 'www.example.com', controller: this.controller })
4014        .databaseAccess(true)
4015    }
4016  }
4017}
4018```
4019
4020### getOriginUsage
4021
4022static getOriginUsage(origin : string) : Promise\<number>
4023
4024以Promise方式异步获取指定源的Web SQL数据库的存储量,存储量以字节为单位。
4025
4026**系统能力:** SystemCapability.Web.Webview.Core
4027
4028**参数:**
4029
4030| 参数名 | 类型   | 必填 | 说明               |
4031| ------ | ------ | ---- | ------------------ |
4032| origin | string | 是   | 指定源的字符串索引 |
4033
4034**返回值:**
4035
4036| 类型            | 说明                                  |
4037| --------------- | ------------------------------------- |
4038| Promise\<number> | Promise实例,用于获取指定源的存储量。 |
4039
4040**错误码:**
4041
4042以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4043
4044| 错误码ID | 错误信息                                              |
4045| -------- | ----------------------------------------------------- |
4046| 17100011 | Invalid origin.                            |
4047
4048**示例:**
4049
4050```ts
4051// xxx.ets
4052import web_webview from '@ohos.web.webview';
4053
4054@Entry
4055@Component
4056struct WebComponent {
4057  controller: web_webview.WebviewController = new web_webview.WebviewController();
4058  origin: string = "file:///";
4059
4060  build() {
4061    Column() {
4062      Button('getOriginUsage')
4063        .onClick(() => {
4064          try {
4065            web_webview.WebStorage.getOriginUsage(this.origin)
4066              .then(usage => {
4067                console.log('usage: ' + usage);
4068              })
4069              .catch(e => {
4070                console.log('error: ' + JSON.stringify(e));
4071              })
4072          } catch (error) {
4073            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4074          }
4075
4076        })
4077      Web({ src: 'www.example.com', controller: this.controller })
4078        .databaseAccess(true)
4079    }
4080  }
4081}
4082```
4083
4084### deleteAllData
4085
4086static deleteAllData(): void
4087
4088清除Web SQL数据库当前使用的所有存储。
4089
4090**系统能力:** SystemCapability.Web.Webview.Core
4091
4092**示例:**
4093
4094```ts
4095// xxx.ets
4096import web_webview from '@ohos.web.webview';
4097
4098@Entry
4099@Component
4100struct WebComponent {
4101  controller: web_webview.WebviewController = new web_webview.WebviewController();
4102
4103  build() {
4104    Column() {
4105      Button('deleteAllData')
4106        .onClick(() => {
4107          try {
4108            web_webview.WebStorage.deleteAllData();
4109          } catch (error) {
4110            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4111          }
4112        })
4113      Web({ src: 'www.example.com', controller: this.controller })
4114        .databaseAccess(true)
4115    }
4116  }
4117}
4118```
4119
4120## WebDataBase
4121
4122web组件数据库管理对象。
4123
4124### getHttpAuthCredentials
4125
4126static getHttpAuthCredentials(host: string, realm: string): Array\<string>
4127
4128检索给定主机和域的HTTP身份验证凭据,该方法为同步方法。
4129
4130**系统能力:** SystemCapability.Web.Webview.Core
4131
4132**参数:**
4133
4134| 参数名 | 类型   | 必填 | 说明                         |
4135| ------ | ------ | ---- | ---------------------------- |
4136| host   | string | 是   | HTTP身份验证凭据应用的主机。 |
4137| realm  | string | 是   | HTTP身份验证凭据应用的域。   |
4138
4139**返回值:**
4140
4141| 类型  | 说明                                         |
4142| ----- | -------------------------------------------- |
4143| Array\<string> | 包含用户名和密码的组数,检索失败返回空数组。 |
4144
4145**示例:**
4146
4147```ts
4148// xxx.ets
4149import web_webview from '@ohos.web.webview';
4150
4151@Entry
4152@Component
4153struct WebComponent {
4154  controller: web_webview.WebviewController = new web_webview.WebviewController();
4155  host: string = "www.spincast.org";
4156  realm: string = "protected example";
4157  username_password: string[];
4158
4159  build() {
4160    Column() {
4161      Button('getHttpAuthCredentials')
4162        .onClick(() => {
4163          try {
4164            this.username_password = web_webview.WebDataBase.getHttpAuthCredentials(this.host, this.realm);
4165            console.log('num: ' + this.username_password.length);
4166          } catch (error) {
4167            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4168          }
4169        })
4170      Web({ src: 'www.example.com', controller: this.controller })
4171    }
4172  }
4173}
4174```
4175
4176### saveHttpAuthCredentials
4177
4178static saveHttpAuthCredentials(host: string, realm: string, username: string, password: string): void
4179
4180保存给定主机和域的HTTP身份验证凭据,该方法为同步方法。
4181
4182**系统能力:** SystemCapability.Web.Webview.Core
4183
4184**参数:**
4185
4186| 参数名   | 类型   | 必填 | 说明                         |
4187| -------- | ------ | ---- | ---------------------------- |
4188| host     | string | 是   | HTTP身份验证凭据应用的主机。 |
4189| realm    | string | 是   | HTTP身份验证凭据应用的域。   |
4190| username | string | 是   | 用户名。                     |
4191| password | string | 是   | 密码。                       |
4192
4193**示例:**
4194
4195```ts
4196// xxx.ets
4197import web_webview from '@ohos.web.webview';
4198
4199@Entry
4200@Component
4201struct WebComponent {
4202  controller: web_webview.WebviewController = new web_webview.WebviewController();
4203  host: string = "www.spincast.org";
4204  realm: string = "protected example";
4205
4206  build() {
4207    Column() {
4208      Button('saveHttpAuthCredentials')
4209        .onClick(() => {
4210          try {
4211            web_webview.WebDataBase.saveHttpAuthCredentials(this.host, this.realm, "Stromgol", "Laroche");
4212          } catch (error) {
4213            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4214          }
4215        })
4216      Web({ src: 'www.example.com', controller: this.controller })
4217    }
4218  }
4219}
4220```
4221
4222### existHttpAuthCredentials
4223
4224static existHttpAuthCredentials(): boolean
4225
4226判断是否存在任何已保存的HTTP身份验证凭据,该方法为同步方法。存在返回true,不存在返回false。
4227
4228**系统能力:** SystemCapability.Web.Webview.Core
4229
4230**返回值:**
4231
4232| 类型    | 说明                                                         |
4233| ------- | ------------------------------------------------------------ |
4234| boolean | 是否存在任何已保存的HTTP身份验证凭据。存在返回true,不存在返回false |
4235
4236**示例:**
4237
4238```ts
4239// xxx.ets
4240import web_webview from '@ohos.web.webview';
4241
4242@Entry
4243@Component
4244struct WebComponent {
4245  controller: web_webview.WebviewController = new web_webview.WebviewController();
4246
4247  build() {
4248    Column() {
4249      Button('existHttpAuthCredentials')
4250        .onClick(() => {
4251          try {
4252            let result = web_webview.WebDataBase.existHttpAuthCredentials();
4253          } catch (error) {
4254            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4255          }
4256        })
4257      Web({ src: 'www.example.com', controller: this.controller })
4258    }
4259  }
4260}
4261```
4262
4263### deleteHttpAuthCredentials
4264
4265static deleteHttpAuthCredentials(): void
4266
4267清除所有已保存的HTTP身份验证凭据,该方法为同步方法。
4268
4269**系统能力:** SystemCapability.Web.Webview.Core
4270
4271**示例:**
4272
4273```ts
4274// xxx.ets
4275import web_webview from '@ohos.web.webview';
4276
4277@Entry
4278@Component
4279struct WebComponent {
4280  controller: web_webview.WebviewController = new web_webview.WebviewController();
4281
4282  build() {
4283    Column() {
4284      Button('deleteHttpAuthCredentials')
4285        .onClick(() => {
4286          try {
4287            web_webview.WebDataBase.deleteHttpAuthCredentials();
4288          } catch (error) {
4289            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4290          }
4291        })
4292      Web({ src: 'www.example.com', controller: this.controller })
4293    }
4294  }
4295}
4296```
4297
4298## GeolocationPermissions
4299
4300web组件地理位置权限管理对象。
4301
4302### 需要权限
4303
4304访问地理位置时需添加权限:ohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATIONohos.permission.LOCATION_IN_BACKGROUND,具体权限说明请参考[位置服务](./js-apis-geolocation.md)。
4305
4306### allowGeolocation
4307
4308static allowGeolocation(origin: string): void
4309
4310允许指定来源使用地理位置接口。
4311
4312**系统能力:** SystemCapability.Web.Webview.Core
4313
4314**参数:**
4315
4316| 参数名 | 类型   | 必填 | 说明               |
4317| ------ | ------ | ---- | ------------------ |
4318| origin | string | 是   |指定源的字符串索引 |
4319
4320**错误码:**
4321
4322以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4323
4324| 错误码ID | 错误信息                                               |
4325| -------- | ------------------------------------------------------ |
4326| 17100011 | Invalid origin.                             |
4327
4328**示例:**
4329
4330```ts
4331// xxx.ets
4332import web_webview from '@ohos.web.webview';
4333
4334@Entry
4335@Component
4336struct WebComponent {
4337  controller: web_webview.WebviewController = new web_webview.WebviewController();
4338  origin: string = "file:///";
4339
4340  build() {
4341    Column() {
4342      Button('allowGeolocation')
4343        .onClick(() => {
4344          try {
4345            web_webview.GeolocationPermissions.allowGeolocation(this.origin);
4346          } catch (error) {
4347            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4348          }
4349        })
4350      Web({ src: 'www.example.com', controller: this.controller })
4351    }
4352  }
4353}
4354```
4355
4356### deleteGeolocation
4357
4358static deleteGeolocation(origin: string): void
4359
4360清除指定来源的地理位置权限状态。
4361
4362**系统能力:** SystemCapability.Web.Webview.Core
4363
4364**参数:**
4365
4366| 参数名 | 类型   | 必填 | 说明               |
4367| ------ | ------ | ---- | ------------------ |
4368| origin | string | 是   | 指定源的字符串索引 |
4369
4370**错误码:**
4371
4372以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4373
4374| 错误码ID | 错误信息                                               |
4375| -------- | ------------------------------------------------------ |
4376| 17100011 | Invalid origin.                             |
4377
4378**示例:**
4379
4380```ts
4381// xxx.ets
4382import web_webview from '@ohos.web.webview';
4383
4384@Entry
4385@Component
4386struct WebComponent {
4387  controller: web_webview.WebviewController = new web_webview.WebviewController();
4388  origin: string = "file:///";
4389
4390  build() {
4391    Column() {
4392      Button('deleteGeolocation')
4393        .onClick(() => {
4394          try {
4395            web_webview.GeolocationPermissions.deleteGeolocation(this.origin);
4396          } catch (error) {
4397            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4398          }
4399        })
4400      Web({ src: 'www.example.com', controller: this.controller })
4401    }
4402  }
4403}
4404```
4405
4406### getAccessibleGeolocation
4407
4408static getAccessibleGeolocation(origin: string, callback: AsyncCallback\<boolean>): void
4409
4410以回调方式异步获取指定源的地理位置权限状态。
4411
4412**系统能力:** SystemCapability.Web.Webview.Core
4413
4414**参数:**
4415
4416| 参数名   | 类型                   | 必填 | 说明                                                         |
4417| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
4418| origin   | string                 | 是   | 指定源的字符串索引                                           |
4419| callback | AsyncCallback\<boolean> | 是   | 返回指定源的地理位置权限状态。获取成功,true表示已授权,false表示拒绝访问。获取失败,表示不存在指定源的权限状态。 |
4420
4421**错误码:**
4422
4423以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4424
4425| 错误码ID | 错误信息                                               |
4426| -------- | ------------------------------------------------------ |
4427| 17100011 | Invalid origin.                             |
4428
4429**示例:**
4430
4431```ts
4432// xxx.ets
4433import web_webview from '@ohos.web.webview';
4434
4435@Entry
4436@Component
4437struct WebComponent {
4438  controller: web_webview.WebviewController = new web_webview.WebviewController();
4439  origin: string = "file:///";
4440
4441  build() {
4442    Column() {
4443      Button('getAccessibleGeolocation')
4444        .onClick(() => {
4445          try {
4446            web_webview.GeolocationPermissions.getAccessibleGeolocation(this.origin, (error, result) => {
4447              if (error) {
4448                console.log('getAccessibleGeolocationAsync error: ' + JSON.stringify(error));
4449                return;
4450              }
4451              console.log('getAccessibleGeolocationAsync result: ' + result);
4452            });
4453          } catch (error) {
4454            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4455          }
4456        })
4457      Web({ src: 'www.example.com', controller: this.controller })
4458    }
4459  }
4460}
4461```
4462
4463### getAccessibleGeolocation
4464
4465static getAccessibleGeolocation(origin: string): Promise\<boolean>
4466
4467以Promise方式异步获取指定源的地理位置权限状态。
4468
4469**系统能力:** SystemCapability.Web.Webview.Core
4470
4471**参数:**
4472
4473| 参数名 | 类型 | 必填 | 说明             |
4474| ------ | -------- | ---- | -------------------- |
4475| origin | string   | 是   | 指定源的字符串索引。 |
4476
4477**返回值:**
4478
4479| 类型             | 说明                                                         |
4480| ---------------- | ------------------------------------------------------------ |
4481| Promise\<boolean> | Promise实例,用于获取指定源的权限状态,获取成功,true表示已授权,false表示拒绝访问。获取失败,表示不存在指定源的权限状态。 |
4482
4483**错误码:**
4484
4485以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)。
4486
4487| 错误码ID | 错误信息                                               |
4488| -------- | ------------------------------------------------------ |
4489| 17100011 | Invalid origin.                             |
4490
4491**示例:**
4492
4493```ts
4494// xxx.ets
4495import web_webview from '@ohos.web.webview';
4496
4497@Entry
4498@Component
4499struct WebComponent {
4500  controller: web_webview.WebviewController = new web_webview.WebviewController();
4501  origin: string = "file:///";
4502
4503  build() {
4504    Column() {
4505      Button('getAccessibleGeolocation')
4506        .onClick(() => {
4507          try {
4508            web_webview.GeolocationPermissions.getAccessibleGeolocation(this.origin)
4509              .then(result => {
4510                console.log('getAccessibleGeolocationPromise result: ' + result);
4511              }).catch(error => {
4512              console.log('getAccessibleGeolocationPromise error: ' + JSON.stringify(error));
4513            });
4514          } catch (error) {
4515            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
4516          }
4517        })
4518      Web({ src: 'www.example.com', controller: this.controller })
4519    }
4520  }
4521}
4522```
4523
4524### getStoredGeolocation
4525
4526static getStoredGeolocation(callback: AsyncCallback\<Array\<string>>): void
4527
4528以回调方式异步获取已存储地理位置权限状态的所有源信息。
4529
4530**系统能力:** SystemCapability.Web.Webview.Core
4531
4532**参数:**
4533
4534| 参数名   | 类型                         | 必填 | 说明                                     |
4535| -------- | ---------------------------- | ---- | ---------------------------------------- |
4536| callback | AsyncCallback\<Array\<string>> | 是   | 返回已存储地理位置权限状态的所有源信息。 |
4537
4538**示例:**
4539
4540```ts
4541// xxx.ets
4542import web_webview from '@ohos.web.webview';
4543
4544@Entry
4545@Component
4546struct WebComponent {
4547  controller: web_webview.WebviewController = new web_webview.WebviewController();
4548
4549  build() {
4550    Column() {
4551      Button('getStoredGeolocation')
4552        .onClick(() => {
4553          try {
4554            web_webview.GeolocationPermissions.getStoredGeolocation((error, origins) => {
4555              if (error) {
4556                console.log('getStoredGeolocationAsync error: ' + JSON.stringify(error));
4557                return;
4558              }
4559              let origins_str: string = origins.join();
4560              console.log('getStoredGeolocationAsync origins: ' + origins_str);
4561            });
4562          } catch (error) {
4563            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4564          }
4565        })
4566      Web({ src: 'www.example.com', controller: this.controller })
4567    }
4568  }
4569}
4570```
4571
4572### getStoredGeolocation
4573
4574static getStoredGeolocation(): Promise\<Array\<string>>
4575
4576以Promise方式异步获取已存储地理位置权限状态的所有源信息。
4577
4578**系统能力:** SystemCapability.Web.Webview.Core
4579
4580**返回值:**
4581
4582| 类型                   | 说明                                                      |
4583| ---------------------- | --------------------------------------------------------- |
4584| Promise\<Array\<string>> | Promise实例,用于获取已存储地理位置权限状态的所有源信息。 |
4585
4586**示例:**
4587
4588```ts
4589// xxx.ets
4590import web_webview from '@ohos.web.webview';
4591
4592@Entry
4593@Component
4594struct WebComponent {
4595  controller: web_webview.WebviewController = new web_webview.WebviewController();
4596
4597  build() {
4598    Column() {
4599      Button('getStoredGeolocation')
4600        .onClick(() => {
4601          try {
4602            web_webview.GeolocationPermissions.getStoredGeolocation()
4603              .then(origins => {
4604                let origins_str: string = origins.join();
4605                console.log('getStoredGeolocationPromise origins: ' + origins_str);
4606              }).catch(error => {
4607              console.log('getStoredGeolocationPromise error: ' + JSON.stringify(error));
4608            });
4609          } catch (error) {
4610            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
4611          }
4612        })
4613      Web({ src: 'www.example.com', controller: this.controller })
4614    }
4615  }
4616}
4617```
4618
4619### deleteAllGeolocation
4620
4621static deleteAllGeolocation(): void
4622
4623清除所有来源的地理位置权限状态。
4624
4625**系统能力:** SystemCapability.Web.Webview.Core
4626
4627**示例:**
4628
4629```ts
4630// xxx.ets
4631import web_webview from '@ohos.web.webview';
4632
4633@Entry
4634@Component
4635struct WebComponent {
4636  controller: web_webview.WebviewController = new web_webview.WebviewController();
4637
4638  build() {
4639    Column() {
4640      Button('deleteAllGeolocation')
4641        .onClick(() => {
4642          try {
4643            web_webview.GeolocationPermissions.deleteAllGeolocation();
4644          } catch (error) {
4645            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
4646          }
4647        })
4648      Web({ src: 'www.example.com', controller: this.controller })
4649    }
4650  }
4651}
4652```
4653## WebHeader
4654Web组件返回的请求/响应头对象。
4655
4656**系统能力:** SystemCapability.Web.Webview.Core
4657
4658| 名称        | 类型   | 可读 | 可写 |说明                 |
4659| ----------- | ------ | -----|------|------------------- |
4660| headerKey   | string | 是 | 是 | 请求/响应头的key。   |
4661| headerValue | string | 是 | 是 | 请求/响应头的value。 |
4662
4663## WebHitTestType
4664
4665**系统能力:** SystemCapability.Web.Webview.Core
4666
4667| 名称          | 值 | 说明                                      |
4668| ------------- | -- |----------------------------------------- |
4669| EditText      | 0 |可编辑的区域。                            |
4670| Email         | 1 |电子邮件地址。                            |
4671| HttpAnchor    | 2 |超链接,其src为http。                     |
4672| HttpAnchorImg | 3 |带有超链接的图片,其中超链接的src为http。 |
4673| Img           | 4 |HTML::img标签。                           |
4674| Map           | 5 |地理地址。                                |
4675| Phone         | 6 |电话号码。                                |
4676| Unknown       | 7 |未知内容。                                |
4677
4678##  HitTestValue
4679
4680提供点击区域的元素信息。示例代码参考getHitTestValue。
4681
4682**系统能力:** SystemCapability.Web.Webview.Core
4683
4684| 名称 | 类型 | 可读 | 可写 | 说明|
4685| ---- | ---- | ---- | ---- |---- |
4686| type | [WebHitTestType](#webhittesttype) | 是 | 否 | 当前被点击区域的元素类型。|
4687| extra | string        | 是 | 否 |点击区域的附加参数信息。若被点击区域为图片或链接,则附加参数信息为其url地址。 |
4688
4689## WebMessage
4690
4691用于描述[WebMessagePort](#webmessageport)所支持的数据类型。
4692
4693**系统能力:** SystemCapability.Web.Webview.Core
4694
4695| 类型       | 说明                                     |
4696| -------- | -------------------------------------- |
4697| string   | 字符串类型数据。 |
4698| ArrayBuffer   | 二进制类型数据。 |
4699
4700## WebStorageOrigin
4701
4702提供Web SQL数据库的使用信息。
4703
4704**系统能力:** SystemCapability.Web.Webview.Core
4705
4706| 名称   | 类型   | 可读 | 可写 | 说明 |
4707| ------ | ------ | ---- | ---- | ---- |
4708| origin | string | 是  | 否 | 指定源的字符串索引。 |
4709| usage  | number | 是  | 否 | 指定源的存储量。     |
4710| quota  | number | 是  | 否 | 指定源的存储配额。   |
4711
4712## BackForwardList
4713
4714当前Webview的历史信息列表。
4715
4716**系统能力:** SystemCapability.Web.Webview.Core
4717
4718| 名称         | 类型   | 可读 | 可写 | 说明                                                         |
4719| ------------ | ------ | ---- | ---- | ------------------------------------------------------------ |
4720| currentIndex | number | 是   | 否   | 当前在页面历史列表中的索引。                                 |
4721| size         | number | 是   | 否   | 历史列表中索引的数量,最多保存50条,超过时起始记录会被覆盖。 |
4722
4723### getItemAtIndex
4724
4725getItemAtIndex(index: number): HistoryItem
4726
4727获取历史列表中指定索引的历史记录项信息。
4728
4729**系统能力:** SystemCapability.Web.Webview.Core
4730
4731**参数:**
4732
4733| 参数名 | 类型   | 必填 | 说明                   |
4734| ------ | ------ | ---- | ---------------------- |
4735| index  | number | 是   | 指定历史列表中的索引。 |
4736
4737**返回值:**
4738
4739| 类型                        | 说明         |
4740| --------------------------- | ------------ |
4741| [HistoryItem](#historyitem) | 历史记录项。 |
4742
4743**示例:**
4744
4745```ts
4746// xxx.ets
4747import web_webview from '@ohos.web.webview';
4748import image from "@ohos.multimedia.image"
4749
4750@Entry
4751@Component
4752struct WebComponent {
4753  controller: web_webview.WebviewController = new web_webview.WebviewController();
4754  @State icon: image.PixelMap = undefined;
4755
4756  build() {
4757    Column() {
4758      Button('getBackForwardEntries')
4759        .onClick(() => {
4760          try {
4761            let list = this.controller.getBackForwardEntries();
4762            let historyItem = list.getItemAtIndex(list.currentIndex);
4763            console.log("HistoryItem: " + JSON.stringify(historyItem));
4764            this.icon = historyItem.icon;
4765          } catch (error) {
4766            console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
4767          }
4768        })
4769      Web({ src: 'www.example.com', controller: this.controller })
4770    }
4771  }
4772}
4773```
4774
4775## HistoryItem
4776
4777页面历史记录项。
4778
4779**系统能力:** SystemCapability.Web.Webview.Core
4780
4781| 名称          | 类型                                   | 可读 | 可写 | 说明                         |
4782| ------------- | -------------------------------------- | ---- | ---- | ---------------------------- |
4783| icon          | [PixelMap](js-apis-image.md#pixelmap7) | 是   | 否   | 历史页面图标的PixelMap对象。 |
4784| historyUrl    | string                                 | 是   | 否   | 历史记录项的url地址。        |
4785| historyRawUrl | string                                 | 是   | 否   | 历史记录项的原始url地址。    |
4786| title         | string                                 | 是   | 否   | 历史记录项的标题。           |
4787
4788## WebCustomScheme
4789
4790自定义协议配置。
4791
4792**系统能力:** SystemCapability.Web.Webview.Core
4793
4794| 名称           | 类型       | 可读 | 可写 | 说明                         |
4795| -------------- | --------- | ---- | ---- | ---------------------------- |
4796| schemeName     | string    | 是   | 是   | 自定义协议名称。最大长度为32,其字符仅支持小写字母、数字、'.'、'+'、'-'。        |
4797| isSupportCORS  | boolean   | 是   | 是   | 是否支持跨域请求。    |
4798| isSupportFetch | boolean   | 是   | 是   | 是否支持fetch请求。           |
4799