1# arkweb_type.h 2<!--Kit: ArkWeb--> 3<!--Subsystem: Web--> 4<!--Owner: @yp99ustc; @aohui; @zourongchun--> 5<!--Designer: @LongLie; @yaomingliu; @zhufenghao--> 6<!--Tester: @ghiker--> 7<!--Adviser: @HelloCrease--> 8 9## 概述 10 11提供ArkWeb在Native侧的公共类型定义。 12 13**库:** libohweb.so 14 15**系统能力:** SystemCapability.Web.Webview.Core 16 17**起始版本:** 12 18 19**相关模块:** [Web](capi-web.md) 20 21## 汇总 22 23### 结构体 24 25| 名称 | typedef关键字 | 描述 | 26| -- | -- | -- | 27| [ArkWeb_JavaScriptBridgeData](capi-web-arkweb-javascriptbridgedata.md) | ArkWeb_JavaScriptBridgeData | 定义JavaScript Bridge数据的基础结构。 | 28| [ArkWeb_WebMessage*](capi-web-arkweb-webmessage8h.md) | ArkWeb_WebMessagePtr | Post Message数据结构体指针。 | 29| [ArkWeb_JavaScriptValue*](capi-web-arkweb-javascriptvalue8h.md) | ArkWeb_JavaScriptValuePtr | JavaScript数据结构体指针。 | 30| [ArkWeb_WebMessagePort*](capi-web-arkweb-webmessageport8h.md) | ArkWeb_WebMessagePortPtr | Post Message端口结构体指针。 | 31| [ArkWeb_JavaScriptObject](capi-web-arkweb-javascriptobject.md) | ArkWeb_JavaScriptObject | 注入的JavaScript结构体。 | 32| [ArkWeb_ProxyMethod](capi-web-arkweb-proxymethod.md) | ArkWeb_ProxyMethod | 注入的Proxy方法通用结构体。 | 33| [ArkWeb_ProxyMethodWithResult](capi-web-arkweb-proxymethodwithresult.md) | ArkWeb_ProxyMethodWithResult | 注入的Proxy方法通用结构体。 | 34| [ArkWeb_ProxyObject](capi-web-arkweb-proxyobject.md) | ArkWeb_ProxyObject | 注入的Proxy对象通用结构体。 | 35| [ArkWeb_ProxyObjectWithResult](capi-web-arkweb-proxyobjectwithresult.md) | ArkWeb_ProxyObjectWithResult | 注入的Proxy对象通用结构体。 | 36| [ArkWeb_ControllerAPI](capi-web-arkweb-controllerapi.md) | ArkWeb_ControllerAPI | Controller相关的Native API结构体。在调用接口前建议通过ARKWEB_MEMBER_MISSING校验该函数结构体是否有对应函数指针,避免SDK与设备ROM不匹配导致crash问题。 | 37| [ArkWeb_ComponentAPI](capi-web-arkweb-componentapi.md) | ArkWeb_ComponentAPI | Component相关的Native API结构体。 | 38| [ArkWeb_WebMessagePortAPI](capi-web-arkweb-webmessageportapi.md) | ArkWeb_WebMessagePortAPI | Post Message相关的Native API结构体。在调用接口前建议通过ARKWEB_MEMBER_MISSING校验该函数结构体是否有对应函数指针,避免SDK与设备ROM不匹配导致crash问题。 | 39| [ArkWeb_WebMessageAPI](capi-web-arkweb-webmessageapi.md) | ArkWeb_WebMessageAPI | Post Message数据相关的Native API结构体。在调用接口前建议通过ARKWEB_MEMBER_MISSING校验该函数结构体是否有对应函数指针,避免SDK与设备ROM不匹配导致crash问题。 | 40| [ArkWeb_CookieManagerAPI](capi-web-arkweb-cookiemanagerapi.md) | ArkWeb_CookieManagerAPI | 定义了ArkWeb的CookieManager接口。在调用接口之前,建议使用ARKWEB_MEMBER_MISSING检查函数结构体是否有对应的函数指针,避免SDK与设备ROM不匹配导致崩溃。 | 41| [ArkWeb_JavaScriptValueAPI](capi-web-arkweb-javascriptvalueapi.md) | ArkWeb_JavaScriptValueAPI | 定义了ArkWeb的JavaScriptValue接口。在调用接口之前,建议使用ARKWEB_MEMBER_MISSING检查函数结构体是否有对应的函数指针,避免SDK与设备ROM不匹配导致崩溃。 | 42 43### 枚举 44 45| 名称 | typedef关键字 | 描述 | 46| -- | -- | -- | 47| [ArkWeb_WebMessageType](#arkweb_webmessagetype) | ArkWeb_WebMessageType | Post Message数据类型。 | 48| [ArkWeb_JavaScriptValueType](#arkweb_javascriptvaluetype) | ArkWeb_JavaScriptValueType | JavaScript数据类型。 | 49 50### 函数 51 52| 名称 | typedef关键字 | 描述 | 53|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------| -- | 54| [typedef void (\*ArkWeb_OnJavaScriptCallback)(const char* webTag, const ArkWeb_JavaScriptBridgeData* data, void* userData)](#arkweb_onjavascriptcallback) | ArkWeb_OnJavaScriptCallback | 注入的JavaScript执行完成的回调。 | 55| [typedef void (\*ArkWeb_OnJavaScriptProxyCallback)(const char* webTag, const ArkWeb_JavaScriptBridgeData* dataArray, size_t arraySize, void* userData)](#arkweb_onjavascriptproxycallback) | ArkWeb_OnJavaScriptProxyCallback | Proxy方法被执行的回调。 | 56| [typedef ArkWeb_JavaScriptValuePtr (\*ArkWeb_OnJavaScriptProxyCallbackWithResult)(const char* webTag, const ArkWeb_JavaScriptBridgeData* dataArray, size_t arraySize, void* userData)](#arkweb_onjavascriptproxycallbackwithresult) | ArkWeb_OnJavaScriptProxyCallbackWithResult | Proxy方法被执行的回调。 | 57| [typedef void (\*ArkWeb_OnComponentCallback)(const char* webTag, void* userData)](#arkweb_oncomponentcallback) | ArkWeb_OnComponentCallback | 组件事件通知相关的通用回调。 | 58| [typedef void (\*ArkWeb_OnScrollCallback)(const char* webTag, void* userData, double x, double y)](#arkweb_onscrollcallback) | ArkWeb_OnScrollCallback | 定义Web组件滚动时的回调函数的类型。 | 59| [typedef void (\*ArkWeb_OnMessageEventHandler)(const char* webTag, const ArkWeb_WebMessagePortPtr port, const ArkWeb_WebMessagePtr message, void* userData)](#arkweb_onmessageeventhandler) | ArkWeb_OnMessageEventHandler | 处理HTML发送过来的Post Message数据。 | 60 61### 宏定义 62 63| 名称 | 描述 | 64| ---- | ---- | 65| ARKWEB_MEMBER_EXISTS(s, f) ((intptr_t) & ((s)->f) - (intptr_t)(s) + sizeof((s)->f) <= \*reinterpret_cast<size_t\*>(s)) | 检查结构体中是否存在该成员变量。<br>**起始版本:** 12 | 66| ARKWEB_MEMBER_MISSING(s, f) (\!ARKWEB_MEMBER_EXISTS(s, f) \|\| !((s)->f)) | 当前结构体存在该成员变量则返回false,否则返回true<br/>**起始版本:** 12 | 67 68## 枚举类型说明 69 70### ArkWeb_WebMessageType 71 72``` 73enum ArkWeb_WebMessageType 74``` 75 76**描述** 77 78Post Message数据类型。 79 80**起始版本:** 12 81 82| 枚举项 | 描述 | 83| -- | -- | 84| ARKWEB_NONE = 0 | 错误数据。 | 85| ARKWEB_STRING | 字符串数据类型。 | 86| ARKWEB_BUFFER | 字节流数据类型。 | 87 88### ArkWeb_JavaScriptValueType 89 90``` 91enum ArkWeb_JavaScriptValueType 92``` 93 94**描述** 95 96JavaScript数据类型。 97 98**起始版本:** 18 99 100| 枚举项 | 描述 | 101| -- | -- | 102| ARKWEB_JAVASCRIPT_NONE = 0 | 错误数据。 | 103| ARKWEB_JAVASCRIPT_STRING | 字符串数据类型。 | 104| ARKWEB_JAVASCRIPT_BOOL | bool数据类型。 | 105 106 107## 函数说明 108 109### ArkWeb_OnJavaScriptCallback() 110 111``` 112typedef void (*ArkWeb_OnJavaScriptCallback)(const char* webTag, const ArkWeb_JavaScriptBridgeData* data, void* userData) 113``` 114 115**描述** 116 117注入的JavaScript执行完成的回调。 118 119**起始版本:** 12 120 121 122**参数:** 123 124| 参数项 | 描述 | 125|---------------------------------------------| -- | 126| const char* webTag | Web组件名称。 | 127| const [ArkWeb_JavaScriptBridgeData](capi-web-arkweb-javascriptbridgedata.md)* data | JavaScriptBridge数据。 | 128| void* userData | 用户自定义的数据。 | 129 130### ArkWeb_OnJavaScriptProxyCallback() 131 132``` 133typedef void (*ArkWeb_OnJavaScriptProxyCallback)(const char* webTag, const ArkWeb_JavaScriptBridgeData* dataArray, size_t arraySize, void* userData) 134``` 135 136**描述** 137 138Proxy方法被执行的回调。 139 140**起始版本:** 12 141 142 143**参数:** 144 145| 参数项 | 描述 | 146| -- | -- | 147| const char* webTag | Web组件名称。 | 148| const [ArkWeb_JavaScriptBridgeData](capi-web-arkweb-javascriptbridgedata.md)* dataArray | 数组数据。 | 149| size_t arraySize | 数组大小。 | 150| void* userData | 用户自定义的数据。 | 151 152### ArkWeb_OnJavaScriptProxyCallbackWithResult() 153 154``` 155typedef ArkWeb_JavaScriptValuePtr (*ArkWeb_OnJavaScriptProxyCallbackWithResult)(const char* webTag, const ArkWeb_JavaScriptBridgeData* dataArray, size_t arraySize, void* userData) 156``` 157 158**描述** 159 160Proxy方法被执行的回调。 161 162**起始版本:** 18 163 164 165**参数:** 166 167| 参数项 | 描述 | 168| -- | -- | 169| const char* webTag | Web组件名称。 | 170| const [ArkWeb_JavaScriptBridgeData](capi-web-arkweb-javascriptbridgedata.md)* dataArray | 数组数据。 | 171| size_t arraySize | 数组大小。 | 172| void* userData | 用户自定义的数据。 | 173 174### ArkWeb_OnComponentCallback() 175 176``` 177typedef void (*ArkWeb_OnComponentCallback)(const char* webTag, void* userData) 178``` 179 180**描述** 181 182组件事件通知相关的通用回调。 183 184**起始版本:** 12 185 186 187**参数:** 188 189| 参数项 | 描述 | 190| -- | -- | 191| const char* webTag | Web组件名称。 | 192| void* userData | 用户自定义的数据。 | 193 194### ArkWeb_OnScrollCallback() 195 196``` 197typedef void (*ArkWeb_OnScrollCallback)(const char* webTag, void* userData, double x, double y) 198``` 199 200**描述** 201 202定义Web组件滚动时的回调函数的类型。 203 204**起始版本:** 18 205 206 207**参数:** 208 209| 参数项 | 描述 | 210| -- | -- | 211| const char* webTag | Web组件名称。 | 212| void* userData | 用户自定义的数据。 | 213| double x | X轴滚动偏移。 | 214| double y | Y轴滚动偏移。 | 215 216### ArkWeb_OnMessageEventHandler() 217 218``` 219typedef void (*ArkWeb_OnMessageEventHandler)(const char* webTag, const ArkWeb_WebMessagePortPtr port, const ArkWeb_WebMessagePtr message, void* userData) 220``` 221 222**描述** 223 224处理HTML发送过来的Post Message数据。 225 226**起始版本:** 12 227 228**参数:** 229 230| 参数项 | 描述 | 231|------------------------------------------------------------------------| -- | 232| const char* webTag | Web组件名称。 | 233| const [ArkWeb_WebMessagePortPtr](capi-web-arkweb-webmessageport8h.md) port | Post Message端口。 | 234| const [ArkWeb_WebMessagePtr](capi-web-arkweb-webmessage8h.md) message | Post Message数据。 | 235| void* userData | 用户自定义数据。 | 236 237 238