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