提交 f4d01d22 编写于 作者: E echoorchid

support more type demo

Signed-off-by: Nechoorchid <huweidong2@huawei.com>
上级 e0659067
...@@ -214,6 +214,236 @@ struct WebComponent { ...@@ -214,6 +214,236 @@ struct WebComponent {
} }
``` ```
### isExtentionType<sup>10+</sup>
**系统能力:** SystemCapability.Web.Webview.Core
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ------------ | ------ | ---- | ---- | ------------------------------------------------|
| isExtentionType | boolean | 是 | 否 | 创建WebMessagePort时是否指定使用扩展增强接口。 |
### postMessageEventExt<sup>10+</sup>
postMessageEventExt(message: WebMessageExt): void
发送消息。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------ | ---- | :------------- |
| message | [WebMessageExt](#webmessageext) | 是 | 要发送的消息。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100010 | Can not post message using this port. |
### onMessageEventExt<sup>10+</sup>
onMessageEventExt(callback: (result: WebMessageExt) => void): void
注册回调函数,接收HTML5侧发送过来的消息。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | :------------------- |
| result | [WebMessageExt](#webmessageext) | 是 | 接收到的消息。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ----------------------------------------------- |
| 17100006 | Can not register message event using this port. |
**示例:**
```ts
// 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[] = null;
nativePort: web_webview.WebMessagePort = null;
@State msg1:string = "";
@State msg2:string = "";
message: web_webview.WebMessageExt = new web_webview.WebMessageExt();
build() {
Column() {
Text(this.msg1).fontSize(16)
Text(this.msg2).fontSize(16)
Button('SendToH5')
.onClick(() => {
// use the native port to send message to html5
try {
console.log("In eTS side send true start");
if (this.nativePort) {
this.message.setString("helloFromEts");
this.nativePort.postMessageEventExt(this.message);
}
}
catch (error) {
console.log("In eTS side send message catch error:" + error.code + ", msg:" + error.message);
}
})
Web({ src: $rawfile('index.html'), controller: this.controller })
.onPageEnd((e)=>{
console.log("In eTS side message onPageEnd init mesaage channel");
// 1. create web message ports
this.ports = this.controller.createWebMessagePorts(true);
// 2. send the other one to h5
this.controller.postMessage("__init_channel_2__", [this.ports[1]], "*");
// 3. keep one for ourself
this.nativePort = this.ports[0];
// 4. set on message function
this.nativePort.onMessageEventExt((result) => {
console.log("In eTS side got message");
try {
var type = result.getType();
console.log("In eTS side getType:" + type);
switch (type) {
case web_webview.WebMessageType.STRING: {
this.msg1 = "result type:" + typeof (result.getString());
this.msg2 = "result getString:" + ((result.getString()));
break;
}
case web_webview.WebMessageType.NUMBER: {
this.msg1 = "result type:" + typeof (result.getNumber());
this.msg2 = "result getNumber:" + ((result.getNumber()));
break;
}
case web_webview.WebMessageType.BOOLEAN: {
this.msg1 = "result type:" + typeof (result.getBoolean());
this.msg2 = "result getBoolean:" + ((result.getBoolean()));
break;
}
case web_webview.WebMessageType.ARRAY_BUFFER: {
this.msg1 = "result type:" + typeof (result.getArrayBuffer());
this.msg2 = "result getArrayBuffer byteLength:" + ((result.getArrayBuffer().byteLength));
break;
}
case web_webview.WebMessageType.ARRAY: {
this.msg1 = "result type:" + typeof (result.getArray());
this.msg2 = "result getArray:" + result.getArray();
break;
}
case web_webview.WebMessageType.ERROR: {
this.msg1 = "result type:" + typeof (result.getError());
this.msg2 = "result getError:" + result.getError();
break;
}
default: {
this.msg1 = "default break, type:" + type;
break;
break;
}
}
}
catch (resError) {
console.log(`log error code: ${resError.code}, Message: ${resError.message}`);
}
});
})
}
}
}
//index.html
<!DOCTYPE html>
<html lang="en-gb">
<head>
<title>WebView MessagePort Demo</title>
</head>
<body>
<h1>Html5 Send and Receive Message</h1>
<h3 id="msg">Receive string:</h3>
<h3 id="msg2">Receive arraybuffer:</h3>
<div style="font-size: 10pt; text-align: center;">
<input type="button" value="Send String" onclick="postStringToApp();" /><br/>
</div>
</body>
<script src="index.js"></script>
</html>
//index.js
var h5Port;
window.addEventListener('message', function(event) {
if (event.data == '__init_channel_2__') {
if(event.ports[0] != null) {
h5Port = event.ports[0]; // 1. 保存从ets侧发送过来的端口
h5Port.onmessage = function(event) {
console.log("hwd In html got message");
// 2. 接收ets侧发送过来的消息.
var result = event.data;
console.log("In html got message, typeof: ", typeof(result));
console.log("In html got message, result: ", (result));
if (typeof(result) == "string") {
console.log("In html got message, String: ", result);
document.getElementById("msg").innerHTML = "String:" + result;
} else if (typeof(result) == "number") {
console.log("In html side got message, number: ", result);
document.getElementById("msg").innerHTML = "Number:" + result;
} else if (typeof(result) == "boolean") {
console.log("In html side got message, boolean: ", result);
document.getElementById("msg").innerHTML = "Boolean:" + result;
} else if (typeof(result) == "object") {
if (result instanceof ArrayBuffer) {
document.getElementById("msg2").innerHTML = "ArrayBuffer:" + result.byteLength;
console.log("In html got message, byteLength: ", result.byteLength);
} else if (result instanceof Error) {
console.log("In html error message, err:" + (result));
console.log("In html error message, typeof err:" + typeof(result));
document.getElementById("msg2").innerHTML = "Error:" + result.name + ", msg:" + result.message;
} else if (result instanceof Array) {
console.log("In html got message, Array");
console.log("In html got message, Array length:" + result.length);
console.log("In html got message, Array[0]:" + (result[0]));
console.log("In html got message, typeof Array[0]:" + typeof(result[0]));
document.getElementById("msg2").innerHTML = "Array len:" + result.length + ", value:" + result;
} else {
console.log("In html got message, not any instance of support type");
document.getElementById("msg").innerHTML = "not any instance of support type";
}
} else {
console.log("In html got message, not support type");
document.getElementById("msg").innerHTML = "not support type";
}
}
h5Port.onmessageerror = (event) => {
console.error(`hwd In html Error receiving message: ${event}`);
};
}
}
})
// 使用h5Port往ets侧发送String类型的消息.
function postStringToApp() {
if (h5Port) {
console.log("In html send string message");
h5Port.postMessage("hello");
console.log("In html send string message end");
} else {
console.error("In html h5port is null, please init first");
}
}
```
## WebviewController ## WebviewController
通过WebviewController可以控制Web组件各种行为。一个WebviewController对象只能控制一个Web组件,且必须在Web组件和WebviewController绑定后,才能调用WebviewController上的方法(静态方法除外)。 通过WebviewController可以控制Web组件各种行为。一个WebviewController对象只能控制一个Web组件,且必须在Web组件和WebviewController绑定后,才能调用WebviewController上的方法(静态方法除外)。
...@@ -1232,6 +1462,232 @@ struct WebComponent { ...@@ -1232,6 +1462,232 @@ struct WebComponent {
} }
``` ```
### runJavaScriptExt<sup>10+</sup>
runJavaScriptExt(script: string, callback : AsyncCallback\<JsMessageExt>): void
异步执行JavaScript脚本,并通过回调方式返回脚本执行的结果。runJavaScriptExt需要在loadUrl完成后,比如onPageEnd中调用。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------- | ---- | ---------------------------- |
| script | string | 是 | JavaScript脚本。 |
| callback | AsyncCallback\<[JsMessageExt](#jsmessageext10)\> | 是 | 回调执行JavaScript脚本结果。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
**示例:**
```ts
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController();
@State msg1: string = ''
@State msg2: string = ''
build() {
Column() {
Text(this.msg1).fontSize(20)
Text(this.msg2).fontSize(20)
Web({ src: $rawfile('index.html'), controller: this.controller })
.javaScriptAccess(true)
.onPageEnd(e => {
try {
this.controller.runJavaScriptExt(
'test()',
(error, result) => {
if (error) {
console.info(`run JavaScript error: ` + JSON.stringify(error))
return;
}
if (result) {
try {
var type = result.getType();
switch (type) {
case web_webview.JsMessageType.STRING: {
this.msg1 = "result type:" + typeof (result.getString());
this.msg2 = "result getString:" + ((result.getString()));
break;
}
case web_webview.JsMessageType.NUMBER: {
this.msg1 = "result type:" + typeof (result.getNumber());
this.msg2 = "result getNumber:" + ((result.getNumber()));
break;
}
case web_webview.JsMessageType.BOOLEAN: {
this.msg1 = "result type:" + typeof (result.getBoolean());
this.msg2 = "result getBoolean:" + ((result.getBoolean()));
break;
}
case web_webview.JsMessageType.ARRAY_BUFFER: {
this.msg1 = "result type:" + typeof (result.getArrayBuffer());
this.msg2 = "result getArrayBuffer byteLength:" + ((result.getArrayBuffer().byteLength));
break;
}
case web_webview.JsMessageType.ARRAY: {
this.msg1 = "result type:" + typeof (result.getArray());
this.msg2 = "result getArray:" + result.getArray();
break;
}
default: {
this.msg1 = "default break, type:" + type;
break;
}
}
}
catch (resError) {
console.log(`log error code: ${resError.code}, Message: ${resError.message}`);
}
}
});
console.info('url: ', e.url);
} catch (error) {
console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
}
})
}
}
}
//index.html
<!DOCTYPE html>
<html lang="en-gb">
<body>
<h1>run JavaScript Ext demo</h1>
</body>
<script type="text/javascript">
function test() {
return "hello, world";
}
</script>
</html>
```
### runJavaScriptExt<sup>10+</sup>
runJavaScriptExt(script: string): Promise\<JsMessageExt>
异步执行JavaScript脚本,并通过Promise方式返回脚本执行的结果。runJavaScriptExt需要在loadUrl完成后,比如onPageEnd中调用。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | -------- | ---- | ---------------- |
| script | string | 是 | JavaScript脚本。 |
**返回值:**
| 类型 | 说明 |
| --------------- | --------------------------------------------------- |
| Promise\<[JsMessageExt](#jsmessageext10)> | Promise实例,返回脚本执行的结果。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
**示例:**
```ts
// xxx.ets
import web_webview from '@ohos.web.webview'
@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController();
@State webResult: string = '';
@State msg1: string = ''
@State msg2: string = ''
build() {
Column() {
Text(this.webResult).fontSize(20)
Text(this.msg1).fontSize(20)
Text(this.msg2).fontSize(20)
Web({ src: $rawfile('index.html'), controller: this.controller })
.javaScriptAccess(true)
.onPageEnd(e => {
this.controller.runJavaScriptExt('test()')
.then((result) => {
try {
var type = result.getType();
switch (type) {
case web_webview.JsMessageType.STRING: {
this.msg1 = "result type:" + typeof (result.getString());
this.msg2 = "result getString:" + ((result.getString()));
break;
}
case web_webview.JsMessageType.NUMBER: {
this.msg1 = "result type:" + typeof (result.getNumber());
this.msg2 = "result getNumber:" + ((result.getNumber()));
break;
}
case web_webview.JsMessageType.BOOLEAN: {
this.msg1 = "result type:" + typeof (result.getBoolean());
this.msg2 = "result getBoolean:" + ((result.getBoolean()));
break;
}
case web_webview.JsMessageType.ARRAY_BUFFER: {
this.msg1 = "result type:" + typeof (result.getArrayBuffer());
this.msg2 = "result getArrayBuffer byteLength:" + ((result.getArrayBuffer().byteLength));
break;
}
case web_webview.JsMessageType.ARRAY: {
this.msg1 = "result type:" + typeof (result.getArray());
this.msg2 = "result getArray:" + result.getArray();
break;
}
default: {
this.msg1 = "default break, type:" + type;
break;
}
}
}
catch (resError) {
console.log(`log error code: ${resError.code}, Message: ${resError.message}`);
}
})
.catch(function (error) {
console.error("error: " + error);
})
})
}
}
}
//index.html
<!DOCTYPE html>
<html lang="en-gb">
<body>
<h1>run JavaScript Ext demo</h1>
</body>
<script type="text/javascript">
function test() {
return "hello, world";
}
</script>
</html>
```
### deleteJavaScriptRegister ### deleteJavaScriptRegister
deleteJavaScriptRegister(name: string): void deleteJavaScriptRegister(name: string): void
...@@ -1568,12 +2024,18 @@ struct WebComponent { ...@@ -1568,12 +2024,18 @@ struct WebComponent {
### createWebMessagePorts ### createWebMessagePorts
createWebMessagePorts(): Array\<WebMessagePort> createWebMessagePorts(isExtentionType?: boolean): Array\<WebMessagePort>
创建Web消息端口。 创建Web消息端口。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core **系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---------------------- | ---- | :------------------------------|
| isExtentionType<sup>10+</sup> | boolean | 否 | 是否使用扩展增强接口,默认false不使用。 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
...@@ -1629,8 +2091,8 @@ postMessage(name: string, ports: Array\<WebMessagePort>, uri: string): void ...@@ -1629,8 +2091,8 @@ postMessage(name: string, ports: Array\<WebMessagePort>, uri: string): void
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | ---------------------- | ---- | :------------------------------- | | ------ | ---------------------- | ---- | :------------------------------- |
| name | string | 是 | 要发送的消息,包含数据和消息端口。 | | name | string | 是 | 要发送的消息名称。 |
| ports | Array\<WebMessagePort> | 是 | 接收该消息的URI。 | | ports | Array\<WebMessagePort> | 是 | 要发送的消息端口。 |
| uri | string | 是 | 接收该消息的URI。 | | uri | string | 是 | 接收该消息的URI。 |
**错误码:** **错误码:**
...@@ -5123,6 +5585,463 @@ Web组件返回的请求/响应头对象。 ...@@ -5123,6 +5585,463 @@ Web组件返回的请求/响应头对象。
| string | 字符串类型数据。 | | string | 字符串类型数据。 |
| ArrayBuffer | 二进制类型数据。 | | ArrayBuffer | 二进制类型数据。 |
## JsMessageType<sup>10+</sup>
[runJavaScirptExt](#runjavascriptext10)接口脚本执行后返回的结果的类型。
**系统能力:** SystemCapability.Web.Webview.Core
| 名称 | 值 | 说明 |
| ------------ | -- |--------------------------------- |
| NOT_SUPPORT | 0 |不支持的数据类型。|
| STRING | 1 |字符串类型。|
| NUMBER | 2 |数值类型。|
| BOOLEAN | 3 |布尔类型。|
| ARRAY_BUFFER | 4 |原始二进制数据缓冲区。|
| ARRAY | 5 |数组类型|
## WebMessageType<sup>10+</sup>
[webMessagePort](#webmessageport)接口所支持的数据类型。
**系统能力:** SystemCapability.Web.Webview.Core
| 名称 | 值 | 说明 |
| ------------ | -- |------------------------------- |
| NOT_SUPPORT | 0 |不支持的数据类型。|
| STRING | 1 |字符串类型。|
| NUMBER | 2 |数值类型。|
| BOOLEAN | 3 |布尔类型。|
| ARRAY_BUFFER | 4 |原始二进制数据缓冲区。|
| ARRAY | 5 |数组类型。|
| ERROR | 6 |错误类型。|
## JsMessageExt<sup>10+</sup>
[runJavaScirptExt](#runjavascriptext10)接口执行脚本返回的数据对象。
### getType<sup>10+</sup>
getType(): JsMessageType
获取数据对象的类型。
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| --------------------------------------------------------- |
| [JsMessageType](#jsmessagetype10) | [runJavaScirptExt](#runjavascriptext10)接口脚本执行后返回的结果的类型。 |
### getString<sup>10+</sup>
getString(): string
获取数据对象的字符串类型数据。完整示例代码参考[runJavaScriptExt](#runjavascriptext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| string | 返回字符串类型的数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the result. |
### getNumber<sup>10+</sup>
getNumber(): number
获取数据对象的数值类型数据。完整示例代码参考[runJavaScriptExt](#runjavascriptext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| number | 返回数值类型的数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the result. |
### getBoolean<sup>10+</sup>
getBoolean(): boolean
获取数据对象的布尔类型数据。完整示例代码参考[runJavaScriptExt](#runjavascriptext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| boolean | 返回布尔类型的数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the result. |
### getArrayBuffer<sup>10+</sup>
getArrayBuffer(): ArrayBuffer
获取数据对象的原始二进制数据。完整示例代码参考[runJavaScriptExt](#runjavascriptext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| ArrayBuffer | 返回原始二进制数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the result. |
### getArray<sup>10+</sup>
getArray(): Array\<string | number | boolean\>
获取数据对象的数组类型数据。完整示例代码参考[runJavaScriptExt](#runjavascriptext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| Array\<string | number | boolean\> | 返回数组类型的数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the result. |
## WebMessageExt<sup>10+</sup>
[webMessagePort](#webmessageport)接口接收、发送的的数据对象。
### getType<sup>10+</sup>
getType(): WebMessageType
获取数据对象的类型。
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| --------------------------------------------------------- |
| [WebMessageType](#webmessagetype10) | [webMessagePort](#webmessageport)接口所支持的数据类型。 |
### getString<sup>10+</sup>
getString(): string
获取数据对象的字符串类型数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| string | 返回字符串类型的数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### getNumber<sup>10+</sup>
getNumber(): number
获取数据对象的数值类型数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| number | 返回数值类型的数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### getBoolean<sup>10+</sup>
getBoolean(): boolean
获取数据对象的布尔类型数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| boolean | 返回布尔类型的数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### getArrayBuffer<sup>10+</sup>
getArrayBuffer(): ArrayBuffer
获取数据对象的原始二进制数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| ArrayBuffer | 返回原始二进制数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### getArray<sup>10+</sup>
getArray(): Array\<string | number | boolean\>
获取数据对象的数组类型数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| Array\<string | number | boolean\> | 返回数组类型的数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### getError<sup>10+</sup>
getError(): Error
获取数据对象的错误类型数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| --------------| ------------- |
| Error | 返回错误对象类型的数据。 |
**错误码:**
以下错误码的详细介绍请参见[webview错误码](../errorcodes/errorcode-webview.md)
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### setType<sup>10+</sup>
setType(type: WebMessageType): void
设置数据对象的类型。
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ---------------------- |
| type | [WebMessageType](#webmessagetype10) | 是 | [webMessagePort](#webmessageport)接口所支持的数据类型。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### setString<sup>10+</sup>
setString(message: string): void
设置数据对象的字符串类型数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------------- |
| message | string | 是 | 字符串类型数据。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### setNumber<sup>10+</sup>
setNumber(message: number): void
设置数据对象的数值类型数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------------- |
| message | number | 是 | 数值类型数据。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### setBoolean<sup>10+</sup>
setBoolean(message: boolean): void
设置数据对象的布尔类型数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------------- |
| message | boolean | 是 | 布尔类型数据。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### setArrayBuffer<sup>10+</sup>
setArrayBuffer(message: ArrayBuffer): void
设置数据对象的原始二进制数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------------- |
| message | ArrayBuffer | 是 | 原始二进制类型数据。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### setArray<sup>10+</sup>
setArray(message: Array\<string | number | boolean\>): void
设置数据对象的数组类型数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------------- |
| message | Array\<string \| number \| boolean\> | 是 | 数组类型数据。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
### setError<sup>10+</sup>
setError(message: Error): void
设置数据对象的错误对象类型数据。完整示例代码参考[onMessageEventExt](#onmessageeventext10)
**系统能力:** SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------------- |
| message | Error | 是 | 错误对象类型数据。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------------------------- |
| 17100014 | The type does not match with the value of the web message. |
## WebStorageOrigin ## WebStorageOrigin
提供Web SQL数据库的使用信息。 提供Web SQL数据库的使用信息。
......
...@@ -229,3 +229,41 @@ Invalid web storage origin. ...@@ -229,3 +229,41 @@ Invalid web storage origin.
2. 如果已经使用,检查调用失败原因,如databaseAccess开发是否打开。 2. 如果已经使用,检查调用失败原因,如databaseAccess开发是否打开。
## 17100013 申请内存失败
**错误信息**
New failed, out of memeory.
**错误描述**
申请失败,内存不足。
**可能原因**
需要发送的数据过大,导致申请内存失败。
**处理步骤**
检查需要发送的数据的长度。
## 17100014 类型和值不匹配
**错误信息**
The type does not match with the value of the message.
**错误描述**
消息的类型和值不匹配。
**可能原因**
获取消息的值和消息本身的类型不匹配。
**处理步骤**
需要根据消息的类型调用相应的接口来获取消息的值。举例:如获取到的类型是BOOLEAN,则需要调用GetBoolean接口来获取布尔值。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册