• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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