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