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