@ohos.web.webview提供web控制能力,web組件提供具有網(wǎng)頁顯示能力。
本模塊接口從API Version 9開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。
示例效果請以真機運行為準,當前IDE預(yù)覽器不支持。
once(type: string, callback: Callback<void>): void
訂閱一次指定類型Web事件的回調(diào)。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | Web事件的類型,目前支持:"webInited"(Web初始化完成)。 |
callback | Callback<void> | 是 | 所訂閱的回調(diào)函數(shù)。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- web_webview.once("webInited", () => {
- console.log("setCookie")
- web_webview.WebCookieManager.setCookie("https://www.example.com", "a=b")
- })
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
postMessageEvent(message: WebMessage): void
發(fā)送消息。完整示例代碼參考postMessage
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
message | 是 | 要發(fā)送的消息。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100010 | Can not post message using this port. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- ports: web_webview.WebMessagePort[];
- build() {
- Column() {
- Button('postMessageEvent')
- .onClick(() => {
- try {
- this.ports = this.controller.createWebMessagePorts();
- this.controller.postMessage('__init_port__', [this.ports[0]], '*');
- this.ports[1].postMessageEvent("post message from ets to html5");
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
onMessageEvent(callback: (result: WebMessage) => void): void
注冊回調(diào)函數(shù),接收HTML5側(cè)發(fā)送過來的消息。完整示例代碼參考postMessage
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
result | 是 | 接收到的消息。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100006 | Can not register message event using this port. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- ports: web_webview.WebMessagePort[];
- build() {
- Column() {
- Button('onMessageEvent')
- .onClick(() => {
- try {
- this.ports = this.controller.createWebMessagePorts();
- this.ports[1].onMessageEvent((msg) => {
- if (typeof(msg) == "string") {
- console.log("received string message from html5, string is:" + msg);
- } else if (typeof(msg) == "object") {
- if (msg instanceof ArrayBuffer) {
- console.log("received arraybuffer from html5, length is:" + msg.byteLength);
- } else {
- console.log("not support");
- }
- } else {
- console.log("not support");
- }
- })
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
close(): void
關(guān)閉該消息端口。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- msgPort: web_webview.WebMessagePort[] = null;
- build() {
- Column() {
- Button('close')
- .onClick(() => {
- if (this.msgPort && this.msgPort.length == 2) {
- this.msgPort[1].close();
- } else {
- console.error("msgPort is null, Please initialize first");
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
通過WebviewController可以控制Web組件各種行為。一個WebviewController對象只能控制一個Web組件,且必須在Web組件和WebviewController綁定后,才能調(diào)用WebviewController上的方法(靜態(tài)方法除外)。
static initializeWebEngine(): void
在 Web 組件初始化之前,通過此接口加載 Web 引擎的動態(tài)庫文件,以提高啟動性能。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
示例:
本示例以 MainAbility 為例,描述了在 Ability 創(chuàng)建階段完成 Web 組件動態(tài)庫加載的功能。
- // xxx.ts
- import UIAbility from '@ohos.app.ability.UIAbility';
- import web_webview from '@ohos.web.webview';
- export default class EntryAbility extends UIAbility {
- onCreate(want, launchParam) {
- console.log("EntryAbility onCreate")
- web_webview.WebviewController.initializeWebEngine()
- globalThis.abilityWant = want
- console.log("EntryAbility onCreate done")
- }
- }
static setWebDebuggingAccess(webDebuggingAccess: boolean): void
設(shè)置是否啟用網(wǎng)頁調(diào)試功能。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
webDebuggingAccess | boolean | 是 | 設(shè)置是否啟用網(wǎng)頁調(diào)試功能。 |
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- aboutToAppear():void {
- try {
- web_webview.WebviewController.setWebDebuggingAccess(true);
- } catch(error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- }
- build() {
- Column() {
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
loadUrl(url: string | Resource, headers?: Array<WebHeader>): void
加載指定的URL。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
url | string | Resource | 是 | 需要加載的 URL。 |
headers | Array<WebHeader> | 否 | URL的附加HTTP請求頭。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
17100002 | Invalid url. |
17100003 | Invalid resource path or file type. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('loadUrl')
- .onClick(() => {
- try {
- //需要加載的URL是string類型
- this.controller.loadUrl('www.example.com');
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('loadUrl')
- .onClick(() => {
- try {
- //帶參數(shù)headers
- this.controller.loadUrl('www.example.com', [{headerKey: "headerKey", headerValue: "headerValue"}]);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
加載本地網(wǎng)頁,加載本地資源文件有兩種方式。
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('loadUrl')
- .onClick(() => {
- try {
- //需要加載的URL是Resource類型
- this.controller.loadUrl($rawfile('index.html'));
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
加載的html文件。
- <!-- index.html -->
- <!DOCTYPE html>
- <html>
- <body>
- <p>Hello World</p>
- </body>
- </html>
2.加載沙箱路徑下的本地資源文件,可以參考web加載沙箱路徑的示例代碼。
loadData(data: string, mimeType: string, encoding: string, baseUrl?: string, historyUrl?: string): void
加載指定的數(shù)據(jù)。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
data | string | 是 | 按照”Base64“或者”URL"編碼后的一段字符串。 |
mimeType | string | 是 | 媒體類型(MIME)。 |
encoding | string | 是 | 編碼類型,具體為“Base64"或者”URL編碼。 |
baseUrl | string | 否 | 指定的一個URL路徑(“http”/“https”/"data"協(xié)議),并由Web組件賦值給window.origin。 |
historyUrl | string | 否 | 用作歷史記錄所使用的URL。非空時,歷史記錄以此URL進行管理。當baseUrl為空時,此屬性無效。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
17100002 | Invalid url. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('loadData')
- .onClick(() => {
- try {
- this.controller.loadData(
- "<html><body bgcolor=\"white\">Source:<pre>source</pre></body></html>",
- "text/html",
- "UTF-8"
- );
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
加載本地資源
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- 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>'
- build() {
- Column() {
- Button('loadData')
- .onClick(() => {
- try {
- this.controller.loadData(this.updataContent, "text/html", "UTF-8", " ", " ");
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
accessForward(): boolean
當前頁面是否可前進,即當前頁面是否有前進歷史記錄。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
boolean | 可以前進返回true,否則返回false。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('accessForward')
- .onClick(() => {
- try {
- let result = this.controller.accessForward();
- console.log('result:' + result);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
forward(): void
按照歷史棧,前進一個頁面。一般結(jié)合accessForward一起使用。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('forward')
- .onClick(() => {
- try {
- this.controller.forward();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
accessBackward(): boolean
當前頁面是否可后退,即當前頁面是否有返回歷史記錄。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
boolean | 可以后退返回true,否則返回false。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('accessBackward')
- .onClick(() => {
- try {
- let result = this.controller.accessBackward();
- console.log('result:' + result);
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
backward(): void
按照歷史棧,后退一個頁面。一般結(jié)合accessBackward一起使用。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('backward')
- .onClick(() => {
- try {
- this.controller.backward();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
onActive(): void
調(diào)用此接口通知Web組件進入前臺激活狀態(tài)。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('onActive')
- .onClick(() => {
- try {
- this.controller.onActive();
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
onInactive(): void
調(diào)用此接口通知Web組件進入未激活狀態(tài)。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('onInactive')
- .onClick(() => {
- try {
- this.controller.onInactive();
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
refresh(): void
調(diào)用此接口通知Web組件刷新網(wǎng)頁。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('refresh')
- .onClick(() => {
- try {
- this.controller.refresh();
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
accessStep(step: number): boolean
當前頁面是否可前進或者后退給定的step步。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
step | number | 是 | 要跳轉(zhuǎn)的步數(shù),正數(shù)代表前進,負數(shù)代表后退。 |
返回值:
類型 | 說明 |
---|---|
boolean | 頁面是否前進或后退 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- @State steps: number = 2;
- build() {
- Column() {
- Button('accessStep')
- .onClick(() => {
- try {
- let result = this.controller.accessStep(this.steps);
- console.log('result:' + result);
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
clearHistory(): void
刪除所有前進后退記錄。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('clearHistory')
- .onClick(() => {
- try {
- this.controller.clearHistory();
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
getHitTest(): WebHitTestType
獲取當前被點擊區(qū)域的元素類型。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
被點擊區(qū)域的元素類型。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getHitTest')
- .onClick(() => {
- try {
- let hitTestType = this.controller.getHitTest();
- console.log("hitTestType: " + hitTestType);
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
registerJavaScriptProxy(object: object, name: string, methodList: Array<string>): void
注入JavaScript對象到window對象中,并在window對象中調(diào)用該對象的方法。注冊后,須調(diào)用refresh接口生效。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
object | object | 是 | 參與注冊的應(yīng)用側(cè)JavaScript對象。只能聲明方法,不能聲明屬性 。其中方法的參數(shù)和返回類型只能為string,number,boolean |
name | string | 是 | 注冊對象的名稱,與window中調(diào)用的對象名一致。注冊后window對象可以通過此名字訪問應(yīng)用側(cè)JavaScript對象。 |
methodList | Array<string> | 是 | 參與注冊的應(yīng)用側(cè)JavaScript對象的方法。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct Index {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- testObj = {
- test: (data) => {
- return "ArkUI Web Component";
- },
- toString: () => {
- console.log('Web Component toString');
- }
- }
- build() {
- Column() {
- Button('refresh')
- .onClick(() => {
- try {
- this.controller.refresh();
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Button('Register JavaScript To Window')
- .onClick(() => {
- try {
- this.controller.registerJavaScriptProxy(this.testObj, "objName", ["test", "toString"]);
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: $rawfile('index.html'), controller: this.controller })
- .javaScriptAccess(true)
- }
- }
- }
加載的html文件。
- <!-- index.html -->
- <!DOCTYPE html>
- <html>
- <meta charset="utf-8">
- <body>
- <button type="button" onclick="htmlTest()">Click Me!</button>
- <p id="demo"></p>
- </body>
- <script type="text/javascript">
- function htmlTest() {
- let str=objName.test();
- document.getElementById("demo").innerHTML=str;
- console.log('objName.test result:'+ str)
- }
- </script>
- </html>
runJavaScript(script: string, callback : AsyncCallback<string>): void
異步執(zhí)行JavaScript腳本,并通過回調(diào)方式返回腳本執(zhí)行的結(jié)果。runJavaScript需要在loadUrl完成后,比如onPageEnd中調(diào)用。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
script | string | 是 | JavaScript腳本。 |
callback | AsyncCallback<string> | 是 | 回調(diào)執(zhí)行JavaScript腳本結(jié)果。JavaScript腳本若執(zhí)行失敗或無返回值時,返回null。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- @State webResult: string = ''
- build() {
- Column() {
- Text(this.webResult).fontSize(20)
- Web({ src: $rawfile('index.html'), controller: this.controller })
- .javaScriptAccess(true)
- .onPageEnd(e => {
- try {
- this.controller.runJavaScript(
- 'test()',
- (error, result) => {
- if (error) {
- console.info(`run JavaScript error: ` + JSON.stringify(error))
- return;
- }
- if (result) {
- this.webResult = result
- console.info(`The test() return value is: ${result}`)
- }
- });
- console.info('url: ', e.url);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- }
- }
- }
加載的html文件。
- <!-- index.html -->
- <!DOCTYPE html>
- <html>
- <meta charset="utf-8">
- <body>
- Hello world!
- </body>
- <script type="text/javascript">
- function test() {
- console.log('Ark WebComponent')
- return "This value is from index.html"
- }
- </script>
- </html>
runJavaScript(script: string): Promise<string>
異步執(zhí)行JavaScript腳本,并通過Promise方式返回腳本執(zhí)行的結(jié)果。runJavaScript需要在loadUrl完成后,比如onPageEnd中調(diào)用。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
script | string | 是 | JavaScript腳本。 |
返回值:
類型 | 說明 |
---|---|
Promise<string> | Promise實例,返回腳本執(zhí)行的結(jié)果,執(zhí)行失敗返回null。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Web({ src: $rawfile('index.html'), controller: this.controller })
- .javaScriptAccess(true)
- .onPageEnd(e => {
- try {
- this.controller.runJavaScript('test()')
- .then(function (result) {
- console.log('result: ' + result);
- })
- .catch(function (error) {
- console.error("error: " + error);
- })
- console.info('url: ', e.url);
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- }
- }
- }
加載的html文件。
- <!-- index.html -->
- <!DOCTYPE html>
- <html>
- <meta charset="utf-8">
- <body>
- Hello world!
- </body>
- <script type="text/javascript">
- function test() {
- console.log('Ark WebComponent')
- return "This value is from index.html"
- }
- </script>
- </html>
deleteJavaScriptRegister(name: string): void
刪除通過registerJavaScriptProxy注冊到window上的指定name的應(yīng)用側(cè)JavaScript對象。刪除后立即生效,無須調(diào)用refresh接口。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
name | string | 是 | 注冊對象的名稱,可在網(wǎng)頁側(cè)JavaScript中通過此名稱調(diào)用應(yīng)用側(cè)JavaScript對象。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
17100008 | Cannot delete JavaScriptProxy. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- @State name: string = 'Object';
- build() {
- Column() {
- Button('deleteJavaScriptRegister')
- .onClick(() => {
- try {
- this.controller.deleteJavaScriptRegister(this.name);
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
zoom(factor: number): void
調(diào)整當前網(wǎng)頁的縮放比例,zoomAccess需為true。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
factor | number | 是 | 基于當前網(wǎng)頁所需調(diào)整的相對縮放比例,正值為放大,負值為縮小。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
17100004 | Function not enable. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- @State factor: number = 1;
- build() {
- Column() {
- Button('zoom')
- .onClick(() => {
- try {
- this.controller.zoom(this.factor);
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- .zoomAccess(true)
- }
- }
- }
searchAllAsync(searchString: string): void
異步查找網(wǎng)頁中所有匹配關(guān)鍵字'searchString'的內(nèi)容并高亮,結(jié)果通過onSearchResultReceive異步返回。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
searchString | string | 是 | 查找的關(guān)鍵字。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- @State searchString: string = "xxx";
- build() {
- Column() {
- Button('searchString')
- .onClick(() => {
- try {
- this.controller.searchAllAsync(this.searchString);
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- .onSearchResultReceive(ret => {
- console.log("on search result receive:" + "[cur]" + ret.activeMatchOrdinal +
- "[total]" + ret.numberOfMatches + "[isDone]" + ret.isDoneCounting);
- })
- }
- }
- }
clearMatches(): void
清除所有通過searchAllAsync匹配到的高亮字符查找結(jié)果。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('clearMatches')
- .onClick(() => {
- try {
- this.controller.clearMatches();
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
searchNext(forward: boolean): void
滾動到下一個匹配的查找結(jié)果并高亮。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
forward | boolean | 是 | 從前向后或者逆向查找。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('searchNext')
- .onClick(() => {
- try {
- this.controller.searchNext(true);
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
clearSslCache(): void
清除Web組件記錄的SSL證書錯誤事件對應(yīng)的用戶操作行為。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('clearSslCache')
- .onClick(() => {
- try {
- this.controller.clearSslCache();
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
clearClientAuthenticationCache(): void
清除Web組件記錄的客戶端證書請求事件對應(yīng)的用戶操作行為。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('clearClientAuthenticationCache')
- .onClick(() => {
- try {
- this.controller.clearClientAuthenticationCache();
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
createWebMessagePorts(): Array<WebMessagePort>
創(chuàng)建Web消息端口。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
Array<WebMessagePort> | web消息端口列表。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- ports: web_webview.WebMessagePort[];
- build() {
- Column() {
- Button('createWebMessagePorts')
- .onClick(() => {
- try {
- this.ports = this.controller.createWebMessagePorts();
- console.log("createWebMessagePorts size:" + this.ports.length)
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
postMessage(name: string, ports: Array<WebMessagePort>, uri: string): void
發(fā)送Web消息端口到HTML。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
name | string | 是 | 要發(fā)送的消息名稱。 |
ports | Array<WebMessagePort> | 是 | 要發(fā)送的消息端口。 |
uri | string | 是 | 接收該消息的URI。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- ports: web_webview.WebMessagePort[];
- @State sendFromEts: string = 'Send this message from ets to HTML';
- @State receivedFromHtml: string = 'Display received message send from HTML';
- build() {
- Column() {
- // 展示接收到的來自HTML的內(nèi)容
- Text(this.receivedFromHtml)
- // 輸入框的內(nèi)容發(fā)送到html
- TextInput({placeholder: 'Send this message from ets to HTML'})
- .onChange((value: string) => {
- this.sendFromEts = value;
- })
- Button('postMessage')
- .onClick(() => {
- try {
- // 1、創(chuàng)建兩個消息端口。
- this.ports = this.controller.createWebMessagePorts();
- // 2、在應(yīng)用側(cè)的消息端口(如端口1)上注冊回調(diào)事件。
- this.ports[1].onMessageEvent((result: web_webview.WebMessage) => {
- let msg = 'Got msg from HTML:';
- if (typeof(result) == "string") {
- console.log("received string message from html5, string is:" + result);
- msg = msg + result;
- } else if (typeof(result) == "object") {
- if (result instanceof ArrayBuffer) {
- console.log("received arraybuffer from html5, length is:" + result.byteLength);
- msg = msg + "lenght is " + result.byteLength;
- } else {
- console.log("not support");
- }
- } else {
- console.log("not support");
- }
- this.receivedFromHtml = msg;
- })
- // 3、將另一個消息端口(如端口0)發(fā)送到HTML側(cè),由HTML側(cè)保存并使用。
- this.controller.postMessage('__init_port__', [this.ports[0]], '*');
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- // 4、使用應(yīng)用側(cè)的端口給另一個已經(jīng)發(fā)送到html的端口發(fā)送消息。
- Button('SendDataToHTML')
- .onClick(() => {
- try {
- if (this.ports && this.ports[1]) {
- this.ports[1].postMessageEvent(this.sendFromEts);
- } else {
- console.error(`ports is null, Please initialize first`);
- }
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: $rawfile('index.html'), controller: this.controller })
- }
- }
- }
- <!--index.html-->
- <!DOCTYPE html>
- <html>
- <head>
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>WebView Message Port Demo</title>
- </head>
- <body>
- <h1>WebView Message Port Demo</h1>
- <div>
- <input type="button" value="SendToEts" onclick="PostMsgToEts(msgFromJS.value);"/><br/>
- <input id="msgFromJS" type="text" value="send this message from HTML to ets"/><br/>
- </div>
- <p class="output">display received message send from ets</p>
- </body>
- <script src="xxx.js"></script>
- </html>
- //xxx.js
- var h5Port;
- var output = document.querySelector('.output');
- window.addEventListener('message', function (event) {
- if (event.data == '__init_port__') {
- if (event.ports[0] != null) {
- h5Port = event.ports[0]; // 1. 保存從ets側(cè)發(fā)送過來的端口
- h5Port.onmessage = function (event) {
- // 2. 接收ets側(cè)發(fā)送過來的消息.
- var msg = 'Got message from ets:';
- var result = event.data;
- if (typeof(result) == "string") {
- console.log("received string message from html5, string is:" + result);
- msg = msg + result;
- } else if (typeof(result) == "object") {
- if (result instanceof ArrayBuffer) {
- console.log("received arraybuffer from html5, length is:" + result.byteLength);
- msg = msg + "lenght is " + result.byteLength;
- } else {
- console.log("not support");
- }
- } else {
- console.log("not support");
- }
- output.innerHTML = msg;
- }
- }
- }
- })
- // 3. 使用h5Port往ets側(cè)發(fā)送消息.
- function PostMsgToEts(data) {
- if (h5Port) {
- h5Port.postMessage(data);
- } else {
- console.error("h5Port is null, Please initialize first");
- }
- }
requestFocus(): void
使當前web頁面獲取焦點。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('requestFocus')
- .onClick(() => {
- try {
- this.controller.requestFocus();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- });
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
zoomIn(): void
調(diào)用此接口將當前網(wǎng)頁進行放大,比例為20%。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
17100004 | Function not enable. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('zoomIn')
- .onClick(() => {
- try {
- this.controller.zoomIn();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
zoomOut(): void
調(diào)用此接口將當前網(wǎng)頁進行縮小,比例為20%。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
17100004 | Function not enable. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('zoomOut')
- .onClick(() => {
- try {
- this.controller.zoomOut();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
getHitTestValue(): HitTestValue
獲取當前被點擊區(qū)域的元素信息。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
點擊區(qū)域的元素信息。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getHitTestValue')
- .onClick(() => {
- try {
- let hitValue = this.controller.getHitTestValue();
- console.log("hitType: " + hitValue.type);
- console.log("extra: " + hitValue.extra);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
getWebId(): number
獲取當前Web組件的索引值,用于多個Web組件的管理。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
number | 當前Web組件的索引值。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getWebId')
- .onClick(() => {
- try {
- let id = this.controller.getWebId();
- console.log("id: " + id);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
getUserAgent(): string
獲取當前默認用戶代理。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
string | 默認用戶代理。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getUserAgent')
- .onClick(() => {
- try {
- let userAgent = this.controller.getUserAgent();
- console.log("userAgent: " + userAgent);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
getTitle(): string
獲取當前網(wǎng)頁的標題。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
string | 當前網(wǎng)頁的標題。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getTitle')
- .onClick(() => {
- try {
- let title = this.controller.getTitle();
- console.log("title: " + title);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
getPageHeight(): number
獲取當前網(wǎng)頁的頁面高度。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
number | 當前網(wǎng)頁的頁面高度。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getPageHeight')
- .onClick(() => {
- try {
- let pageHeight = this.controller.getPageHeight();
- console.log("pageHeight : " + pageHeight);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
storeWebArchive(baseName: string, autoName: boolean, callback: AsyncCallback<string>): void
以回調(diào)方式異步保存當前頁面。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
baseName | string | 是 | 生成的離線網(wǎng)頁存儲位置,該值不能為空。 |
autoName | boolean | 是 | 決定是否自動生成文件名。如果為false,則按baseName的文件名存儲;如果為true,則根據(jù)當前Url自動生成文件名,并按baseName的文件目錄存儲。 |
callback | AsyncCallback<string> | 是 | 返回文件存儲路徑,保存網(wǎng)頁失敗會返回null。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
17100003 | Invalid resource path or file type. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('storeWebArchive')
- .onClick(() => {
- try {
- this.controller.storeWebArchive("/data/storage/el2/base/", true, (error, filename) => {
- if (error) {
- console.info(`save web archive error: ` + JSON.stringify(error))
- return;
- }
- if (filename != null) {
- console.info(`save web archive success: ${filename}`)
- }
- });
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
storeWebArchive(baseName: string, autoName: boolean): Promise<string>
以Promise方式異步保存當前頁面。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
baseName | string | 是 | 生成的離線網(wǎng)頁存儲位置,該值不能為空。 |
autoName | boolean | 是 | 決定是否自動生成文件名。如果為false,則按baseName的文件名存儲;如果為true,則根據(jù)當前Url自動生成文件名,并按baseName的文件目錄存儲。 |
返回值:
類型 | 說明 |
---|---|
Promise<string> | Promise實例,保存成功返回文件路徑,保存失敗返回null。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
17100003 | Invalid resource path or file type. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('storeWebArchive')
- .onClick(() => {
- try {
- this.controller.storeWebArchive("/data/storage/el2/base/", true)
- .then(filename => {
- if (filename != null) {
- console.info(`save web archive success: ${filename}`)
- }
- })
- .catch(error => {
- console.log('error: ' + JSON.stringify(error));
- })
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
getUrl(): string
獲取當前頁面的url地址。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
string | 當前頁面的url地址。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getUrl')
- .onClick(() => {
- try {
- let url = this.controller.getUrl();
- console.log("url: " + url);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
stop(): void
停止頁面加載。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('stop')
- .onClick(() => {
- try {
- this.controller.stop();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- });
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
backOrForward(step: number): void
按照歷史棧,前進或者后退指定步長的頁面,當歷史棧中不存在對應(yīng)步長的頁面時,不會進行頁面跳轉(zhuǎn)。
前進或者后退頁面時,直接使用已加載過的網(wǎng)頁,無需重新加載網(wǎng)頁。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
step | number | 是 | 需要前進或后退的步長。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- @State step: number = -2;
- build() {
- Column() {
- Button('backOrForward')
- .onClick(() => {
- try {
- this.controller.backOrForward(this.step);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
scrollTo(x:number, y:number): void
將頁面滾動到指定的絕對位置。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
x | number | 是 | 絕對位置的水平坐標,當傳入數(shù)值為負數(shù)時,按照傳入0處理。 |
y | number | 是 | 絕對位置的垂直坐標,當傳入數(shù)值為負數(shù)時,按照傳入0處理。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('scrollTo')
- .onClick(() => {
- try {
- this.controller.scrollTo(50, 50);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
- <!--xxx.html-->
- <!DOCTYPE html>
- <html>
- <head>
- <title>Demo</title>
- <style>
- body {
- width:3000px;
- height:3000px;
- padding-right:170px;
- padding-left:170px;
- border:5px solid blueviolet
- }
- </style>
- </head>
- <body>
- Scroll Test
- </body>
- </html>
scrollBy(deltaX:number, deltaY:number): void
將頁面滾動指定的偏移量。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
deltaX | number | 是 | 水平偏移量,其中水平向右為正方向。 |
deltaY | number | 是 | 垂直偏移量,其中垂直向下為正方向。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('scrollBy')
- .onClick(() => {
- try {
- this.controller.scrollBy(50, 50);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
- <!--xxx.html-->
- <!DOCTYPE html>
- <html>
- <head>
- <title>Demo</title>
- <style>
- body {
- width:3000px;
- height:3000px;
- padding-right:170px;
- padding-left:170px;
- border:5px solid blueviolet
- }
- </style>
- </head>
- <body>
- Scroll Test
- </body>
- </html>
slideScroll(vx:number, vy:number): void
按照指定速度模擬對頁面的輕掃滾動動作。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
vx | number | 是 | 輕掃滾動的水平速度分量,其中水平向右為速度正方向。 |
vy | number | 是 | 輕掃滾動的垂直速度分量,其中垂直向下為速度正方向。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('slideScroll')
- .onClick(() => {
- try {
- this.controller.slideScroll(500, 500);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
- <!--xxx.html-->
- <!DOCTYPE html>
- <html>
- <head>
- <title>Demo</title>
- <style>
- body {
- width:3000px;
- height:3000px;
- padding-right:170px;
- padding-left:170px;
- border:5px solid blueviolet
- }
- </style>
- </head>
- <body>
- Scroll Test
- </body>
- </html>
getOriginalUrl(): string
獲取當前頁面的原始url地址。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
string | 當前頁面的原始url地址。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getOrgUrl')
- .onClick(() => {
- try {
- let url = this.controller.getOriginalUrl();
- console.log("original url: " + url);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
getFavicon(): image.PixelMap
獲取頁面的favicon圖標。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
頁面favicon圖標的PixelMap對象。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- import image from "@ohos.multimedia.image"
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- @State pixelmap: image.PixelMap = undefined;
- build() {
- Column() {
- Button('getFavicon')
- .onClick(() => {
- try {
- this.pixelmap = this.controller.getFavicon();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
setNetworkAvailable(enable: boolean): void
設(shè)置JavaScript中的window.navigator.onLine屬性。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
enable | boolean | 是 | 是否使能window.navigator.onLine。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('setNetworkAvailable')
- .onClick(() => {
- try {
- this.controller.setNetworkAvailable(true);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: $rawfile('index.html'), controller: this.controller })
- }
- }
- }
加載的html文件。
- <!-- index.html -->
- <!DOCTYPE html>
- <html>
- <body>
- <h1>online 屬性</h1>
- <p id="demo"></p>
- <button onclick="func()">click</button>
- <script>
- let online = navigator.onLine;
- document.getElementById("demo").innerHTML = "瀏覽器在線:" + online;
- function func(){
- var online = navigator.onLine;
- document.getElementById("demo").innerHTML = "瀏覽器在線:" + online;
- }
- </script>
- </body>
- </html>
hasImage(callback: AsyncCallback<boolean>): void
通過Callback方式異步查找當前頁面是否存在圖像。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<boolean> | 是 | 返回查找頁面是否存在圖像。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('hasImageCb')
- .onClick(() => {
- try {
- this.controller.hasImage((error, data) => {
- if (error) {
- console.info(`hasImage error: ` + JSON.stringify(error))
- return;
- }
- console.info("hasImage: " + data);
- });
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
hasImage(): Promise<boolean>
通過Promise方式異步查找當前頁面是否存在圖像。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
Promise<boolean> | Promise實例,返回查找頁面是否存在圖像。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web compoent. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('hasImagePm')
- .onClick(() => {
- try {
- this.controller.hasImage().then((data) => {
- console.info('hasImage: ' + data);
- })
- .catch(function (error) {
- console.error("error: " + error);
- })
- } catch (error) {
- console.error(`Errorcode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
removeCache(clearRom: boolean): void
清除應(yīng)用中的資源緩存文件,此方法將會清除同一應(yīng)用中所有webview的緩存文件。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
clearRom | boolean | 是 | 設(shè)置為true時同時清除rom和ram中的緩存,設(shè)置為false時只清除ram中的緩存。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('removeCache')
- .onClick(() => {
- try {
- this.controller.removeCache(false);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
pageUp(top:boolean): void
將Webview的內(nèi)容向上滾動半個視框大小或者跳轉(zhuǎn)到頁面最頂部,通過top入?yún)⒖刂啤?/p>
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
top | boolean | 是 | 是否跳轉(zhuǎn)到頁面最頂部,設(shè)置為false時將頁面內(nèi)容向上滾動半個視框大小,設(shè)置為true時跳轉(zhuǎn)到頁面最頂部。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('pageUp')
- .onClick(() => {
- try {
- this.controller.pageUp(false);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
pageDown(bottom:boolean): void
將Webview的內(nèi)容向下滾動半個視框大小或者跳轉(zhuǎn)到頁面最底部,通過bottom入?yún)⒖刂啤?/p>
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
bottom | boolean | 是 | 是否跳轉(zhuǎn)到頁面最底部,設(shè)置為false時將頁面內(nèi)容向下滾動半個視框大小,設(shè)置為true時跳轉(zhuǎn)到頁面最底部。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('pageDown')
- .onClick(() => {
- try {
- this.controller.pageDown(false);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
getBackForwardEntries(): BackForwardList
獲取當前Webview的歷史信息列表。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
當前Webview的歷史信息列表。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getBackForwardEntries')
- .onClick(() => {
- try {
- let list = this.controller.getBackForwardEntries()
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
serializeWebState(): Uint8Array
將當前Webview的頁面狀態(tài)歷史記錄信息序列化。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
Uint8Array | 當前Webview的頁面狀態(tài)歷史記錄序列化后的數(shù)據(jù)。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- import fs from '@ohos.file.fs';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('serializeWebState')
- .onClick(() => {
- try {
- let state = this.controller.serializeWebState();
- // globalThis.cacheDir從MainAbility.ts中獲取。
- let path = globalThis.cacheDir;
- path += '/WebState';
- // 以同步方法打開文件。
- let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
- fs.writeSync(file.fd, state.buffer);
- fs.closeSync(file.fd);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
- // xxx.ts
- import UIAbility from '@ohos.app.ability.UIAbility';
- import web_webview from '@ohos.web.webview';
- export default class MainAbility extends UIAbility {
- onCreate(want, launchParam) {
- // 通過在globalThis對象上綁定cacheDir,可以實現(xiàn)UIAbility組件與Page之間的數(shù)據(jù)同步。
- globalThis.cacheDir = this.context.cacheDir;
- }
- }
restoreWebState(state: Uint8Array): void
當前Webview從序列化數(shù)據(jù)中恢復(fù)頁面狀態(tài)歷史記錄。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
state | Uint8Array | 是 | 頁面狀態(tài)歷史記錄序列化數(shù)據(jù)。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100001 | Init error. The WebviewController must be associated with a Web component. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- import fs from '@ohos.file.fs';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('RestoreWebState')
- .onClick(() => {
- try {
- // globalThis.cacheDir從MainAbility.ts中獲取。
- let path = globalThis.cacheDir;
- path += '/WebState';
- // 以同步方法打開文件。
- let file = fs.openSync(path, fs.OpenMode.READ_WRITE);
- let stat = fs.statSync(path);
- let size = stat.size;
- let buf = new ArrayBuffer(size);
- fs.read(file.fd, buf, (err, readLen) => {
- if (err) {
- console.info("mkdir failed with error message: " + err.message + ", error code: " + err.code);
- } else {
- console.info("read file data succeed");
- this.controller.restoreWebState(new Uint8Array(buf.slice(0, readLen)));
- fs.closeSync(file);
- }
- });
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
- // xxx.ts
- import UIAbility from '@ohos.app.ability.UIAbility';
- import web_webview from '@ohos.web.webview';
- export default class MainAbility extends UIAbility {
- onCreate(want, launchParam) {
- // 通過在globalThis對象上綁定cacheDir,可以實現(xiàn)UIAbility組件與Page之間的數(shù)據(jù)同步。
- globalThis.cacheDir = this.context.cacheDir;
- }
- }
static customizeSchemes(schemes: Array<WebCustomScheme>): void
配置Web自定義協(xié)議請求的權(quán)限。建議在任何Web組件初始化之前進行調(diào)用。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
schemes | Array<WebCustomScheme> | 是 | 自定義協(xié)議配置,最多支持同時配置10個自定義協(xié)議。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- responseweb: WebResourceResponse = new WebResourceResponse()
- scheme1: web_webview.WebCustomScheme = {schemeName: "name1", isSupportCORS: true, isSupportFetch: true}
- scheme2: web_webview.WebCustomScheme = {schemeName: "name2", isSupportCORS: true, isSupportFetch: true}
- scheme3: web_webview.WebCustomScheme = {schemeName: "name3", isSupportCORS: true, isSupportFetch: true}
- aboutToAppear():void {
- try {
- web_webview.WebviewController.customizeSchemes([this.scheme1, this.scheme2, this.scheme3])
- } catch(error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- }
- build() {
- Column() {
- Web({ src: 'www.example.com', controller: this.controller })
- .onInterceptRequest((event) => {
- console.log('url:' + event.request.getRequestUrl())
- return this.responseweb
- })
- }
- }
- }
通過WebCookie可以控制Web組件中的cookie的各種行為,其中每個應(yīng)用中的所有web組件共享一個WebCookieManager實例。
目前調(diào)用WebCookieManager下的方法,都需要先加載Web組件。
static getCookie(url: string): string
獲取指定url對應(yīng)cookie的值。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
url | string | 是 | 要獲取的cookie所屬的url,建議使用完整的url。 |
返回值:
類型 | 說明 |
---|---|
string | 指定url對應(yīng)的cookie的值。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100002 | Invalid url. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getCookie')
- .onClick(() => {
- try {
- let value = web_webview.WebCookieManager.getCookie('https://www.example.com');
- console.log("value: " + value);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static setCookie(url: string, value: string): void
為指定url設(shè)置單個cookie的值。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
url | string | 是 | 要設(shè)置的cookie所屬的url,建議使用完整的url。 |
value | string | 是 | 要設(shè)置的cookie的值。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100002 | Invalid url. |
17100005 | Invalid cookie value. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('setCookie')
- .onClick(() => {
- try {
- web_webview.WebCookieManager.setCookie('https://www.example.com', 'a=b');
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static saveCookieAsync(callback: AsyncCallback<void>): void
將當前存在內(nèi)存中的cookie異步保存到磁盤中。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<void> | 是 | callback回調(diào),用于獲取cookie是否成功保存。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('saveCookieAsync')
- .onClick(() => {
- try {
- web_webview.WebCookieManager.saveCookieAsync((error) => {
- if (error) {
- console.log("error: " + error);
- }
- })
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static saveCookieAsync(): Promise<void>
將當前存在內(nèi)存中的cookie以Promise方法異步保存到磁盤中。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
Promise<void> | Promise實例,用于獲取cookie是否成功保存。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('saveCookieAsync')
- .onClick(() => {
- try {
- web_webview.WebCookieManager.saveCookieAsync()
- .then(() => {
- console.log("saveCookieAsyncCallback success!");
- })
- .catch((error) => {
- console.error("error: " + error);
- });
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static putAcceptCookieEnabled(accept: boolean): void
設(shè)置WebCookieManager實例是否擁有發(fā)送和接收cookie的權(quán)限。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
accept | boolean | 是 | 設(shè)置是否擁有發(fā)送和接收cookie的權(quán)限。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('putAcceptCookieEnabled')
- .onClick(() => {
- try {
- web_webview.WebCookieManager.putAcceptCookieEnabled(false);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static isCookieAllowed(): boolean
獲取WebCookieManager實例是否擁有發(fā)送和接收cookie的權(quán)限。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
boolean | 是否擁有發(fā)送和接收cookie的權(quán)限,默認為true。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('isCookieAllowed')
- .onClick(() => {
- let result = web_webview.WebCookieManager.isCookieAllowed();
- console.log("result: " + result);
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static putAcceptThirdPartyCookieEnabled(accept: boolean): void
設(shè)置WebCookieManager實例是否擁有發(fā)送和接收第三方cookie的權(quán)限。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
accept | boolean | 是 | 設(shè)置是否擁有發(fā)送和接收第三方cookie的權(quán)限。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('putAcceptThirdPartyCookieEnabled')
- .onClick(() => {
- try {
- web_webview.WebCookieManager.putAcceptThirdPartyCookieEnabled(false);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static isThirdPartyCookieAllowed(): boolean
獲取WebCookieManager實例是否擁有發(fā)送和接收第三方cookie的權(quán)限。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
boolean | 是否擁有發(fā)送和接收第三方cookie的權(quán)限,默認為false。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('isThirdPartyCookieAllowed')
- .onClick(() => {
- let result = web_webview.WebCookieManager.isThirdPartyCookieAllowed();
- console.log("result: " + result);
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static existCookie(): boolean
獲取是否存在cookie。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
boolean | 是否擁有發(fā)送和接收第三方cookie的權(quán)限。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('existCookie')
- .onClick(() => {
- let result = web_webview.WebCookieManager.existCookie();
- console.log("result: " + result);
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static deleteEntireCookie(): void
清除所有cookie。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('deleteEntireCookie')
- .onClick(() => {
- web_webview.WebCookieManager.deleteEntireCookie();
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static deleteSessionCookie(): void
清除所有會話cookie。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview'
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('deleteSessionCookie')
- .onClick(() => {
- web_webview.WebCookieManager.deleteSessionCookie();
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
通過WebStorage可管理Web SQL數(shù)據(jù)庫接口和HTML5 Web存儲接口,每個應(yīng)用中的所有Web組件共享一個WebStorage。
目前調(diào)用WebStorage下的方法,都需要先加載Web組件。
static deleteOrigin(origin : string): void
清除指定源所使用的存儲。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
origin | string | 是 | 指定源的字符串索引,來自于getOrigins。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100011 | Invalid origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- origin: string = "file:///";
- build() {
- Column() {
- Button('deleteOrigin')
- .onClick(() => {
- try {
- web_webview.WebStorage.deleteOrigin(this.origin);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- .databaseAccess(true)
- }
- }
- }
static getOrigins(callback: AsyncCallback<Array<WebStorageOrigin>>) : void
以回調(diào)方式異步獲取當前使用Web SQL數(shù)據(jù)庫的所有源的信息。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<Array<WebStorageOrigin>> | 是 | 以數(shù)組方式返回源的信息,信息內(nèi)容參考WebStorageOrigin。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100012 | Invalid web storage origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getOrigins')
- .onClick(() => {
- try {
- web_webview.WebStorage.getOrigins((error, origins) => {
- if (error) {
- console.log('error: ' + JSON.stringify(error));
- return;
- }
- for (let i = 0; i < origins.length; i++) {
- console.log('origin: ' + origins[i].origin);
- console.log('usage: ' + origins[i].usage);
- console.log('quota: ' + origins[i].quota);
- }
- })
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- .databaseAccess(true)
- }
- }
- }
static getOrigins() : Promise<Array<WebStorageOrigin>>
以Promise方式異步獲取當前使用Web SQL數(shù)據(jù)庫的所有源的信息。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
Promise<Array<WebStorageOrigin>> | Promise實例,用于獲取當前所有源的信息,信息內(nèi)容參考WebStorageOrigin。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100012 | Invalid web storage origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getOrigins')
- .onClick(() => {
- try {
- web_webview.WebStorage.getOrigins()
- .then(origins => {
- for (let i = 0; i < origins.length; i++) {
- console.log('origin: ' + origins[i].origin);
- console.log('usage: ' + origins[i].usage);
- console.log('quota: ' + origins[i].quota);
- }
- })
- .catch(e => {
- console.log('error: ' + JSON.stringify(e));
- })
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- .databaseAccess(true)
- }
- }
- }
static getOriginQuota(origin : string, callback : AsyncCallback<number>) : void
使用callback回調(diào)異步獲取指定源的Web SQL數(shù)據(jù)庫的存儲配額,配額以字節(jié)為單位。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
origin | string | 是 | 指定源的字符串索引 |
callback | AsyncCallback<number> | 是 | 指定源的存儲配額 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100011 | Invalid origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- origin: string = "file:///";
- build() {
- Column() {
- Button('getOriginQuota')
- .onClick(() => {
- try {
- web_webview.WebStorage.getOriginQuota(this.origin, (error, quota) => {
- if (error) {
- console.log('error: ' + JSON.stringify(error));
- return;
- }
- console.log('quota: ' + quota);
- })
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- .databaseAccess(true)
- }
- }
- }
static getOriginQuota(origin : string) : Promise<number>
以Promise方式異步獲取指定源的Web SQL數(shù)據(jù)庫的存儲配額,配額以字節(jié)為單位。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
origin | string | 是 | 指定源的字符串索引 |
返回值:
類型 | 說明 |
---|---|
Promise<number> | Promise實例,用于獲取指定源的存儲配額。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100011 | Invalid origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- origin: string = "file:///";
- build() {
- Column() {
- Button('getOriginQuota')
- .onClick(() => {
- try {
- web_webview.WebStorage.getOriginQuota(this.origin)
- .then(quota => {
- console.log('quota: ' + quota);
- })
- .catch(e => {
- console.log('error: ' + JSON.stringify(e));
- })
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- .databaseAccess(true)
- }
- }
- }
static getOriginUsage(origin : string, callback : AsyncCallback<number>) : void
以回調(diào)方式異步獲取指定源的Web SQL數(shù)據(jù)庫的存儲量,存儲量以字節(jié)為單位。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
origin | string | 是 | 指定源的字符串索引 |
callback | AsyncCallback<number> | 是 | 指定源的存儲量。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100011 | Invalid origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- origin: string = "file:///";
- build() {
- Column() {
- Button('getOriginUsage')
- .onClick(() => {
- try {
- web_webview.WebStorage.getOriginUsage(this.origin, (error, usage) => {
- if (error) {
- console.log('error: ' + JSON.stringify(error));
- return;
- }
- console.log('usage: ' + usage);
- })
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- .databaseAccess(true)
- }
- }
- }
static getOriginUsage(origin : string) : Promise<number>
以Promise方式異步獲取指定源的Web SQL數(shù)據(jù)庫的存儲量,存儲量以字節(jié)為單位。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
origin | string | 是 | 指定源的字符串索引 |
返回值:
類型 | 說明 |
---|---|
Promise<number> | Promise實例,用于獲取指定源的存儲量。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100011 | Invalid origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- origin: string = "file:///";
- build() {
- Column() {
- Button('getOriginUsage')
- .onClick(() => {
- try {
- web_webview.WebStorage.getOriginUsage(this.origin)
- .then(usage => {
- console.log('usage: ' + usage);
- })
- .catch(e => {
- console.log('error: ' + JSON.stringify(e));
- })
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- .databaseAccess(true)
- }
- }
- }
static deleteAllData(): void
清除Web SQL數(shù)據(jù)庫當前使用的所有存儲。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('deleteAllData')
- .onClick(() => {
- try {
- web_webview.WebStorage.deleteAllData();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- .databaseAccess(true)
- }
- }
- }
static getHttpAuthCredentials(host: string, realm: string): Array<string>
檢索給定主機和域的HTTP身份驗證憑據(jù),該方法為同步方法。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
host | string | 是 | HTTP身份驗證憑據(jù)應(yīng)用的主機。 |
realm | string | 是 | HTTP身份驗證憑據(jù)應(yīng)用的域。 |
返回值:
類型 | 說明 |
---|---|
Array<string> | 包含用戶名和密碼的組數(shù),檢索失敗返回空數(shù)組。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- host: string = "www.spincast.org";
- realm: string = "protected example";
- username_password: string[];
- build() {
- Column() {
- Button('getHttpAuthCredentials')
- .onClick(() => {
- try {
- this.username_password = web_webview.WebDataBase.getHttpAuthCredentials(this.host, this.realm);
- console.log('num: ' + this.username_password.length);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static saveHttpAuthCredentials(host: string, realm: string, username: string, password: string): void
保存給定主機和域的HTTP身份驗證憑據(jù),該方法為同步方法。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
host | string | 是 | HTTP身份驗證憑據(jù)應(yīng)用的主機。 |
realm | string | 是 | HTTP身份驗證憑據(jù)應(yīng)用的域。 |
username | string | 是 | 用戶名。 |
password | string | 是 | 密碼。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- host: string = "www.spincast.org";
- realm: string = "protected example";
- build() {
- Column() {
- Button('saveHttpAuthCredentials')
- .onClick(() => {
- try {
- web_webview.WebDataBase.saveHttpAuthCredentials(this.host, this.realm, "Stromgol", "Laroche");
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static existHttpAuthCredentials(): boolean
判斷是否存在任何已保存的HTTP身份驗證憑據(jù),該方法為同步方法。存在返回true,不存在返回false。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
boolean | 是否存在任何已保存的HTTP身份驗證憑據(jù)。存在返回true,不存在返回false |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('existHttpAuthCredentials')
- .onClick(() => {
- try {
- let result = web_webview.WebDataBase.existHttpAuthCredentials();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static deleteHttpAuthCredentials(): void
清除所有已保存的HTTP身份驗證憑據(jù),該方法為同步方法。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('deleteHttpAuthCredentials')
- .onClick(() => {
- try {
- web_webview.WebDataBase.deleteHttpAuthCredentials();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
訪問地理位置時需添加權(quán)限:ohos.permission.LOCATION、ohos.permission.APPROXIMATELY_LOCATION、ohos.permission.LOCATION_IN_BACKGROUND,具體權(quán)限說明請參考位置服務(wù)。
static allowGeolocation(origin: string): void
允許指定來源使用地理位置接口。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
origin | string | 是 | 指定源的字符串索引 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100011 | Invalid origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- origin: string = "file:///";
- build() {
- Column() {
- Button('allowGeolocation')
- .onClick(() => {
- try {
- web_webview.GeolocationPermissions.allowGeolocation(this.origin);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static deleteGeolocation(origin: string): void
清除指定來源的地理位置權(quán)限狀態(tài)。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
origin | string | 是 | 指定源的字符串索引 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100011 | Invalid origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- origin: string = "file:///";
- build() {
- Column() {
- Button('deleteGeolocation')
- .onClick(() => {
- try {
- web_webview.GeolocationPermissions.deleteGeolocation(this.origin);
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static getAccessibleGeolocation(origin: string, callback: AsyncCallback<boolean>): void
以回調(diào)方式異步獲取指定源的地理位置權(quán)限狀態(tài)。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
origin | string | 是 | 指定源的字符串索引 |
callback | AsyncCallback<boolean> | 是 | 返回指定源的地理位置權(quán)限狀態(tài)。獲取成功,true表示已授權(quán),false表示拒絕訪問。獲取失敗,表示不存在指定源的權(quán)限狀態(tài)。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100011 | Invalid origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- origin: string = "file:///";
- build() {
- Column() {
- Button('getAccessibleGeolocation')
- .onClick(() => {
- try {
- web_webview.GeolocationPermissions.getAccessibleGeolocation(this.origin, (error, result) => {
- if (error) {
- console.log('getAccessibleGeolocationAsync error: ' + JSON.stringify(error));
- return;
- }
- console.log('getAccessibleGeolocationAsync result: ' + result);
- });
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static getAccessibleGeolocation(origin: string): Promise<boolean>
以Promise方式異步獲取指定源的地理位置權(quán)限狀態(tài)。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
origin | string | 是 | 指定源的字符串索引。 |
返回值:
類型 | 說明 |
---|---|
Promise<boolean> | Promise實例,用于獲取指定源的權(quán)限狀態(tài),獲取成功,true表示已授權(quán),false表示拒絕訪問。獲取失敗,表示不存在指定源的權(quán)限狀態(tài)。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見webview錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
17100011 | Invalid origin. |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- origin: string = "file:///";
- build() {
- Column() {
- Button('getAccessibleGeolocation')
- .onClick(() => {
- try {
- web_webview.GeolocationPermissions.getAccessibleGeolocation(this.origin)
- .then(result => {
- console.log('getAccessibleGeolocationPromise result: ' + result);
- }).catch(error => {
- console.log('getAccessibleGeolocationPromise error: ' + JSON.stringify(error));
- });
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static getStoredGeolocation(callback: AsyncCallback<Array<string>>): void
以回調(diào)方式異步獲取已存儲地理位置權(quán)限狀態(tài)的所有源信息。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<Array<string>> | 是 | 返回已存儲地理位置權(quán)限狀態(tài)的所有源信息。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getStoredGeolocation')
- .onClick(() => {
- try {
- web_webview.GeolocationPermissions.getStoredGeolocation((error, origins) => {
- if (error) {
- console.log('getStoredGeolocationAsync error: ' + JSON.stringify(error));
- return;
- }
- let origins_str: string = origins.join();
- console.log('getStoredGeolocationAsync origins: ' + origins_str);
- });
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static getStoredGeolocation(): Promise<Array<string>>
以Promise方式異步獲取已存儲地理位置權(quán)限狀態(tài)的所有源信息。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
返回值:
類型 | 說明 |
---|---|
Promise<Array<string>> | Promise實例,用于獲取已存儲地理位置權(quán)限狀態(tài)的所有源信息。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('getStoredGeolocation')
- .onClick(() => {
- try {
- web_webview.GeolocationPermissions.getStoredGeolocation()
- .then(origins => {
- let origins_str: string = origins.join();
- console.log('getStoredGeolocationPromise origins: ' + origins_str);
- }).catch(error => {
- console.log('getStoredGeolocationPromise error: ' + JSON.stringify(error));
- });
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
static deleteAllGeolocation(): void
清除所有來源的地理位置權(quán)限狀態(tài)。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('deleteAllGeolocation')
- .onClick(() => {
- try {
- web_webview.GeolocationPermissions.deleteAllGeolocation();
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
Web組件返回的請求/響應(yīng)頭對象。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
名稱 | 類型 | 可讀 | 可寫 | 說明 |
---|---|---|---|---|
headerKey | string | 是 | 是 | 請求/響應(yīng)頭的key。 |
headerValue | string | 是 | 是 | 請求/響應(yīng)頭的value。 |
系統(tǒng)能力: SystemCapability.Web.Webview.Core
名稱 | 值 | 說明 |
---|---|---|
EditText | 0 | 可編輯的區(qū)域。 |
1 | 電子郵件地址。 | |
HttpAnchor | 2 | 超鏈接,其src為http。 |
HttpAnchorImg | 3 | 帶有超鏈接的圖片,其中超鏈接的src為http。 |
Img | 4 | HTML::img標簽。 |
Map | 5 | 地理地址。 |
Phone | 6 | 電話號碼。 |
Unknown | 7 | 未知內(nèi)容。 |
提供點擊區(qū)域的元素信息。示例代碼參考getHitTestValue。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
名稱 | 類型 | 可讀 | 可寫 | 說明 |
---|---|---|---|---|
type | 是 | 否 | 當前被點擊區(qū)域的元素類型。 | |
extra | string | 是 | 否 | 點擊區(qū)域的附加參數(shù)信息。若被點擊區(qū)域為圖片或鏈接,則附加參數(shù)信息為其url地址。 |
用于描述WebMessagePort所支持的數(shù)據(jù)類型。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
類型 | 說明 |
---|---|
string | 字符串類型數(shù)據(jù)。 |
ArrayBuffer | 二進制類型數(shù)據(jù)。 |
提供Web SQL數(shù)據(jù)庫的使用信息。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
名稱 | 類型 | 可讀 | 可寫 | 說明 |
---|---|---|---|---|
origin | string | 是 | 否 | 指定源的字符串索引。 |
usage | number | 是 | 否 | 指定源的存儲量。 |
quota | number | 是 | 否 | 指定源的存儲配額。 |
當前Webview的歷史信息列表。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
名稱 | 類型 | 可讀 | 可寫 | 說明 |
---|---|---|---|---|
currentIndex | number | 是 | 否 | 當前在頁面歷史列表中的索引。 |
size | number | 是 | 否 | 歷史列表中索引的數(shù)量,最多保存50條,超過時起始記錄會被覆蓋。 |
getItemAtIndex(index: number): HistoryItem
獲取歷史列表中指定索引的歷史記錄項信息。
系統(tǒng)能力: SystemCapability.Web.Webview.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
index | number | 是 | 指定歷史列表中的索引。 |
返回值:
類型 | 說明 |
---|---|
歷史記錄項。 |
示例:
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- import image from "@ohos.multimedia.image"
- @Entry
- @Component
- struct WebComponent {
- controller: web_webview.WebviewController = new web_webview.WebviewController();
- @State icon: image.PixelMap = undefined;
- build() {
- Column() {
- Button('getBackForwardEntries')
- .onClick(() => {
- try {
- let list = this.controller.getBackForwardEntries();
- let historyItem = list.getItemAtIndex(list.currentIndex);
- console.log("HistoryItem: " + JSON.stringify(historyItem));
- this.icon = historyItem.icon;
- } catch (error) {
- console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
更多建議: