1# 使用Web组件加载页面 2 3 4页面加载是Web组件的基本功能。根据页面加载数据来源可以分为三种常用场景,包括加载网络页面、加载本地页面、加载HTML格式的富文本数据。 5 6 7页面加载过程中,若涉及网络资源获取,需要配置[ohos.permission.INTERNET](../security/accesstoken-guidelines.md)网络访问权限。 8 9 10## 加载网络页面 11 12开发者可以在Web组件创建的时候指定默认加载的网络页面 。在默认页面加载完成后,如果开发者需要变更此Web组件显示的网络页面,可以通过调用[loadUrl()](../reference/apis/js-apis-webview.md#loadurl)接口加载指定网络网页。 13 14 15在下面的示例中,在Web组件加载完“www.example.com”页面后,开发者可通过loadUrl接口将此Web组件显示页面变更为“www.example1.com”。 16 17 18 19```ts 20// xxx.ets 21import web_webview from '@ohos.web.webview'; 22 23@Entry 24@Component 25struct WebComponent { 26 webviewController: web_webview.WebviewController = new web_webview.WebviewController(); 27 28 build() { 29 Column() { 30 Button('loadUrl') 31 .onClick(() => { 32 try { 33 // 点击按钮时,通过loadUrl,跳转到www.example1.com 34 this.webviewController.loadUrl('www.example1.com'); 35 } catch (error) { 36 console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); 37 } 38 }) 39 // 组件创建时,加载www.example.com 40 Web({ src: 'www.example.com', controller: this.webviewController}) 41 } 42 } 43} 44``` 45 46 47## 加载本地页面 48 49将本地页面文件放在应用的rawfile目录下,开发者可以在Web组件创建的时候指定默认加载的本地页面 ,并且加载完成后可通过调用[loadUrl()](../reference/apis/js-apis-webview.md#loadurl)接口变更当前Web组件的页面。 50 51 52在下面的示例中展示加载本地页面文件的方法: 53 54 55- 将资源文件放置在应用的resources/rawfile目录下。 56 57 **图1** 资源文件路径 58 59 ![resource-path](figures/resource-path.png) 60 61 62- 应用侧代码。 63 64 ```ts 65 // xxx.ets 66 import web_webview from '@ohos.web.webview'; 67 68 @Entry 69 @Component 70 struct WebComponent { 71 webviewController: web_webview.WebviewController = new web_webview.WebviewController(); 72 73 build() { 74 Column() { 75 Button('loadUrl') 76 .onClick(() => { 77 try { 78 // 点击按钮时,通过loadUrl,跳转到local1.html 79 this.webviewController.loadUrl($rawfile("local1.html")); 80 } catch (error) { 81 console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); 82 } 83 }) 84 // 组件创建时,通过$rawfile加载本地文件local.html 85 Web({ src: $rawfile("local.html"), controller: this.webviewController }) 86 } 87 } 88 } 89 ``` 90 91 92- local.html页面代码。 93 94 ```html 95 <!-- local.html --> 96 <!DOCTYPE html> 97 <html> 98 <body> 99 <p>Hello World</p> 100 </body> 101 </html> 102 ``` 103 104 105## 加载HTML格式的文本数据 106 107Web组件可以通过[loadData()](../reference/apis/js-apis-webview.md#loaddata)接口实现加载HTML格式的文本数据。当开发者不需要加载整个页面,只需要显示一些页面片段时,可通过此功能来快速加载页面。 108 109 110 111```ts 112// xxx.ets 113import web_webview from '@ohos.web.webview'; 114 115@Entry 116@Component 117struct WebComponent { 118 controller: web_webview.WebviewController = new web_webview.WebviewController(); 119 120 build() { 121 Column() { 122 Button('loadData') 123 .onClick(() => { 124 try { 125 // 点击按钮时,通过loadData,加载HTML格式的文本数据 126 this.controller.loadData( 127 '<html><body bgcolor=\"white\">Source:<pre>source</pre></body></html>', 128 'text/html', 129 'UTF-8' 130 ); 131 } catch (error) { 132 console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); 133 } 134 }) 135 // 组件创建时,加载www.example.com 136 Web({ src: 'www.example.com', controller: this.controller }) 137 } 138 } 139} 140``` 141