# Class (WebStorage)
通过WebStorage可管理Web SQL数据库接口和HTML5 Web存储接口,每个应用中的所有Web组件共享一个WebStorage。
> **说明:**
>
> - 本模块首批接口从API version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
>
> - 本Class首批接口从API version 9开始支持。
>
> - 示例效果请以真机运行为准,当前DevEco Studio预览器不支持。
>
> - 目前调用WebStorage下的方法,都需要先加载Web组件。
## 导入模块
```ts
import { webview } from '@kit.ArkWeb';
```
## deleteOrigin
static deleteOrigin(origin: string): void
清除指定源所使用的存储。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------ |
| origin | string | 是 | 指定源的字符串索引,来自于[getOrigins](#getorigins)。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------ |
| 17100011 | Invalid origin. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
**示例:**
```ts
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
origin: string = "resource://rawfile/";
build() {
Column() {
Button('deleteOrigin')
.onClick(() => {
try {
webview.WebStorage.deleteOrigin(this.origin);
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
Web({ src: $rawfile('index.html'), controller: this.controller })
}
}
}
```
加载的html文件。
```html
test
状态信息
```
## getOrigins
static getOrigins(callback: AsyncCallback\>): void
以回调方式异步获取当前使用Web SQL数据库的所有源的信息。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------------------------- | ---- | ------------------------------------------------------ |
| callback | AsyncCallback\> | 是 | 以数组方式返回源的信息。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------ |
| 17100012 | Invalid web storage origin. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
**示例:**
```ts
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
build() {
Column() {
Button('getOrigins')
.onClick(() => {
try {
webview.WebStorage.getOrigins((error, origins) => {
if (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
return;
}
for (let i = 0; i < origins.length; i++) {
console.info('origin: ' + origins[i].origin);
console.info('usage: ' + origins[i].usage);
console.info('quota: ' + origins[i].quota);
}
})
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
Web({ src: $rawfile('index.html'), controller: this.controller })
}
}
}
```
加载的html文件,请参考[deleteOrigin](#deleteorigin)接口下的html文件。
## getOrigins
static getOrigins(): Promise\>
以Promise方式异步获取当前使用Web SQL数据库的所有源的信息。
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| -------------------------------- | ------------------------------------------------------------ |
| Promise\> | Promise实例,用于获取当前所有源的信息。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------ |
| 17100012 | Invalid web storage origin. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
**示例:**
```ts
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
build() {
Column() {
Button('getOrigins')
.onClick(() => {
try {
webview.WebStorage.getOrigins()
.then(origins => {
for (let i = 0; i < origins.length; i++) {
console.info('origin: ' + origins[i].origin);
console.info('usage: ' + origins[i].usage);
console.info('quota: ' + origins[i].quota);
}
})
.catch((e: BusinessError) => {
console.error('error: ' + JSON.stringify(e));
})
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
Web({ src: $rawfile('index.html'), controller: this.controller })
}
}
}
```
加载的html文件,请参考[deleteOrigin](#deleteorigin)接口下的html文件。
## getOriginQuota
static getOriginQuota(origin: string, callback: AsyncCallback\): void
使用callback回调异步获取指定源的Web SQL数据库的存储配额,配额以字节为单位。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ |
| origin | string | 是 | 指定源的字符串索引。 |
| callback | AsyncCallback\ | 是 | 指定源的存储配额。
number是long型整数,范围为(-2,147,483,648)~(2,147,483,647)。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------ |
| 17100011 | Invalid origin. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
**示例:**
```ts
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
origin: string = "resource://rawfile/";
build() {
Column() {
Button('getOriginQuota')
.onClick(() => {
try {
webview.WebStorage.getOriginQuota(this.origin, (error, quota) => {
if (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
return;
}
console.info('quota: ' + quota);
})
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
Web({ src: $rawfile('index.html'), controller: this.controller })
}
}
}
```
加载的html文件,请参考[deleteOrigin](#deleteorigin)接口下的html文件。
## getOriginQuota
static getOriginQuota(origin: string): Promise\
以Promise方式异步获取指定源的Web SQL数据库的存储配额,配额以字节为单位。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------ |
| origin | string | 是 | 指定源的字符串索引 |
**返回值:**
| 类型 | 说明 |
| --------------- | --------------------------------------- |
| Promise\ | Promise实例,用于获取指定源的存储配额。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------ |
| 17100011 | Invalid origin. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
**示例:**
```ts
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
origin: string = "resource://rawfile/";
build() {
Column() {
Button('getOriginQuota')
.onClick(() => {
try {
webview.WebStorage.getOriginQuota(this.origin)
.then(quota => {
console.info('quota: ' + quota);
})
.catch((e: BusinessError) => {
console.error('error: ' + JSON.stringify(e));
})
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
Web({ src: $rawfile('index.html'), controller: this.controller })
}
}
}
```
加载的html文件,请参考[deleteOrigin](#deleteorigin)接口下的html文件。
## getOriginUsage
static getOriginUsage(origin: string, callback: AsyncCallback\): void
以回调方式异步获取指定源的Web SQL数据库的存储量,存储量以字节为单位。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ |
| origin | string | 是 | 指定源的字符串索引 |
| callback | AsyncCallback\ | 是 | 指定源的存储量。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------ |
| 17100011 | Invalid origin. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
**示例:**
```ts
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
origin: string = "resource://rawfile/";
build() {
Column() {
Button('getOriginUsage')
.onClick(() => {
try {
webview.WebStorage.getOriginUsage(this.origin, (error, usage) => {
if (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
return;
}
console.info('usage: ' + usage);
})
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
Web({ src: $rawfile('index.html'), controller: this.controller })
}
}
}
```
加载的html文件,请参考[deleteOrigin](#deleteorigin)接口下的html文件。
## getOriginUsage
static getOriginUsage(origin: string): Promise\
以Promise方式异步获取指定源的Web SQL数据库的存储量,存储量以字节为单位。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------ |
| origin | string | 是 | 指定源的字符串索引 |
**返回值:**
| 类型 | 说明 |
| --------------- | ------------------------------------- |
| Promise\ | Promise实例,用于获取指定源的存储量。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。
| 错误码ID | 错误信息 |
| -------- | ----------------------------------------------------- |
| 17100011 | Invalid origin. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
**示例:**
```ts
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
origin: string = "resource://rawfile/";
build() {
Column() {
Button('getOriginUsage')
.onClick(() => {
try {
webview.WebStorage.getOriginUsage(this.origin)
.then(usage => {
console.info('usage: ' + usage);
}).catch((e: BusinessError) => {
console.error('error: ' + JSON.stringify(e));
})
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
Web({ src: $rawfile('index.html'), controller: this.controller })
}
}
}
```
加载的html文件,请参考[deleteOrigin](#deleteorigin)接口下的html文件。
## deleteAllData
static deleteAllData(incognito?: boolean): void
清除Web SQL数据库当前使用的所有存储。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------ |
| incognito11+ | boolean | 否 | true表示删除所有隐私模式下内存中的web数据,false表示删除正常非隐私模式下Web的SQL数据库当前使用的所有存储。
默认值:false。
传入undefined与null时为false。 |
**示例:**
```ts
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
build() {
Column() {
Button('deleteAllData')
.onClick(() => {
try {
webview.WebStorage.deleteAllData();
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
Web({ src: $rawfile('index.html'), controller: this.controller })
}
}
}
```
加载的html文件,请参考[deleteOrigin](#deleteorigin)接口下加载的html文件。