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