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