1# ArkWeb_ControllerAPI 2 3 4## 概述 5 6Controller相关的Native API结构体。 在调用接口前建议通过ARKWEB_MEMBER_MISSING校验该函数结构体是否有对应函数指针,避免SDK与设备ROM不匹配导致crash问题。 7 8**起始版本:** 12 9 10**相关模块:**[Web](_web.md) 11 12**所在头文件:** [arkweb_type.h](arkweb__type_8h.md) 13 14## 汇总 15 16 17### 成员变量 18 19| 名称 | 描述 | 20| -------- | -------- | 21| size_t [size](#size) | 结构体的大小。 | 22| void(\* [runJavaScript](#runjavascript) )(const char \*webTag, const [ArkWeb_JavaScriptObject](_ark_web___java_script_object.md) \*javascriptObject) | 注入JavaScript脚本。 | 23| void(\* [registerJavaScriptProxy](#registerjavascriptproxy) )(const char \*webTag, const [ArkWeb_ProxyObject](_ark_web___proxy_object.md) \*proxyObject) | 注入JavaScript对象到window对象中,并在window对象中调用该对象的同步方法。 | 24| void(\* [deleteJavaScriptRegister](#deletejavascriptregister) )(const char \*webTag, const char \*objName) | 删除通过registerJavaScriptProxy注册到window上的指定name的应用侧JavaScript对象。 | 25| void(\* [refresh](#refresh) )(const char \*webTag) | 刷新当前网页。 | 26| void(\* [registerAsyncJavaScriptProxy](#registerasyncjavascriptproxy) )(const char \*webTag, const [ArkWeb_ProxyObject](_ark_web___proxy_object.md) \*proxyObject) | 注入JavaScript对象到window对象中,并在window对象中调用该对象的异步方法。 | 27| [ArkWeb_WebMessagePortPtr](_web.md#arkweb_webmessageportptr) \*(\* [createWebMessagePorts](#createwebmessageports) )(const char \*webTag, size_t \*[size](#size)) | 创建Post Message端口。 | 28| void(\* [destroyWebMessagePorts](#destroywebmessageports) )([ArkWeb_WebMessagePortPtr](_web.md#arkweb_webmessageportptr) \*\*ports, size_t [size](#size)) | 销毁端口。 | 29| [ArkWeb_ErrorCode](_web.md#arkweb_errorcode)(\* [postWebMessage](#postwebmessage) )(const char \*webTag, const char \*name, [ArkWeb_WebMessagePortPtr](_web.md#arkweb_webmessageportptr) \*webMessagePorts, size_t [size](#size), const char \*url) | 将端口发送到HTML主页面。 | 30| const char \*(\* [getLastJavascriptProxyCallingFrameUrl](#getlastjavascriptproxycallingframeurl) )() | 获取调用JavaScriptProxy最后一帧的url。 在JavaScriptProxy调用的线程上调用。 通过registerJavaScriptProxy或者javaScriptProxy注入JavaScript对象到window对象中。该接口可以获取最后一次调用注入对象frame的url。 在被调用函数内部获取url才能获取到正确值,可以在函数里内部获取url后保存下来。 | 31| void(\* [registerJavaScriptProxyEx](#registerjavascriptproxyex) )(const char \*webTag, const [ArkWeb_ProxyObjectWithResult](_ark_web___proxy_object_with_result.md) \*proxyObject, const char \*permission) | 注入JavaScript对象到window对象中,并在window对象中调用该对象的同步方法。该对象的同步方法可以带返回值。 | 32| void(\* [registerAsyncJavaScriptProxyEx](#registerasyncjavascriptproxyex) )(const char \*webTag, const [ArkWeb_ProxyObject](_ark_web___proxy_object.md) \*proxyObject, const char \*permission) | 注入JavaScript对象到window对象中,并在window对象中调用该对象的异步方法。 | 33 34 35## 结构体成员变量说明 36 37 38### createWebMessagePorts 39 40``` 41ArkWeb_WebMessagePortPtr*(* ArkWeb_ControllerAPI::createWebMessagePorts) (const char *webTag, size_t *size) 42``` 43**描述:** 44 45创建Post Message端口。 46 47**参数:** 48 49| 名称 | 描述 | 50| -------- | -------- | 51| webTag | Web组件名称。 | 52| size | 出参,端口数量。 | 53 54**返回:** 55 56Post Message端口结构体指针。 57 58 59### deleteJavaScriptRegister 60 61``` 62void(* ArkWeb_ControllerAPI::deleteJavaScriptRegister) (const char *webTag, const char *objName) 63``` 64**描述:** 65 66删除通过registerJavaScriptProxy注册到window上的指定name的应用侧JavaScript对象。 67 68 69### destroyWebMessagePorts 70 71``` 72void(* ArkWeb_ControllerAPI::destroyWebMessagePorts) (ArkWeb_WebMessagePortPtr **ports, size_t size) 73``` 74**描述:** 75 76销毁端口。 77 78**参数:** 79 80| 名称 | 描述 | 81| -------- | -------- | 82| ports | Message端口结构体指针数组。 | 83| size | 端口数量。 | 84 85 86### getLastJavascriptProxyCallingFrameUrl 87 88``` 89const char*(* ArkWeb_ControllerAPI::getLastJavascriptProxyCallingFrameUrl) () 90``` 91**描述:** 92 93获取调用JavaScriptProxy最后一帧的url。 在JavaScriptProxy调用的线程上调用。 通过registerJavaScriptProxy或者javaScriptProxy注入JavaScript对象到window对象中。该接口可以获取最后一次调用注入对象frame的url。 在被调用函数内部获取url才能获取到正确值,可以在函数里内部获取url后保存下来。 94 95**起始版本:** 14 96 97**返回:** 98 99调用JavaScriptProxy最后一帧的url。 100 101 102### postWebMessage 103 104``` 105ArkWeb_ErrorCode(* ArkWeb_ControllerAPI::postWebMessage) (const char *webTag, const char *name, ArkWeb_WebMessagePortPtr *webMessagePorts, size_t size, const char *url) 106``` 107**描述:** 108 109将端口发送到HTML主页面。 110 111**参数:** 112 113| 名称 | 描述 | 114| -------- | -------- | 115| webTag | Web组件名称。 | 116| name | 发送给HTML的消息名称。 | 117| webMessagePorts | Post Message端口结构体指针。 | 118| size | 端口数量。 | 119| url | 接收到消息的页面url。 | 120 121**返回:** 122 123返回值错误码。 [ARKWEB_SUCCESS](_web.md#arkweb_errorcode-1) 执行成功。 [ARKWEB_INVALID_PARAM](_web.md#arkweb_errorcode-1) 参数无效。 [ARKWEB_INIT_ERROR](_web.md#arkweb_errorcode-1) 初始化失败,没有找到与webTag绑定的Web组件。 124 125 126### refresh 127 128``` 129void(* ArkWeb_ControllerAPI::refresh) (const char *webTag) 130``` 131**描述:** 132 133刷新当前网页。 134 135 136### registerAsyncJavaScriptProxy 137 138``` 139void(* ArkWeb_ControllerAPI::registerAsyncJavaScriptProxy) (const char *webTag, const ArkWeb_ProxyObject *proxyObject) 140``` 141**描述:** 142 143注入JavaScript对象到window对象中,并在window对象中调用该对象的异步方法。 144 145 146### registerAsyncJavaScriptProxyEx 147 148``` 149void(* ArkWeb_ControllerAPI::registerAsyncJavaScriptProxyEx) (const char *webTag, const ArkWeb_ProxyObject *proxyObject, const char *permission) 150``` 151**描述:** 152 153注入JavaScript对象到window对象中,并在window对象中调用该对象的异步方法。 154 155**起始版本:** 14 156 157**参数:** 158 159| 名称 | 描述 | 160| -------- | -------- | 161| webTag | Web组件名称。 | 162| proxyObject | 注册的对象。 | 163| permission | json格式字符串,默认值为空。该字符串用来配置JSBridge的权限限制,可以配置对象和方法级别。 | 164 165 166### registerJavaScriptProxy 167 168``` 169void(* ArkWeb_ControllerAPI::registerJavaScriptProxy) (const char *webTag, const ArkWeb_ProxyObject *proxyObject) 170``` 171**描述:** 172 173注入JavaScript对象到window对象中,并在window对象中调用该对象的同步方法。 174 175 176### registerJavaScriptProxyEx 177 178``` 179void(* ArkWeb_ControllerAPI::registerJavaScriptProxyEx) (const char *webTag, const ArkWeb_ProxyObjectWithResult *proxyObject, const char *permission) 180``` 181**描述:** 182 183注入JavaScript对象到window对象中,并在window对象中调用该对象的同步方法。该对象的同步方法可以带返回值。 184 185**起始版本:** 14 186 187**参数:** 188 189| 名称 | 描述 | 190| -------- | -------- | 191| webTag | Web组件名称。 | 192| proxyObject | 注册的对象。 | 193| permission | json格式字符串,默认值为空。该字符串用来配置JSBridge的权限限制,可以配置对象和方法级别。 | 194 195 196### runJavaScript 197 198``` 199void(* ArkWeb_ControllerAPI::runJavaScript) (const char *webTag, const ArkWeb_JavaScriptObject *javascriptObject) 200``` 201**描述:** 202 203注入JavaScript脚本。 204 205 206### size 207 208``` 209size_t ArkWeb_ControllerAPI::size 210``` 211**描述:** 212 213结构体的大小。 214