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