# Entry:
## 应用侧调用前端页面函数
### 介绍
1. 本示例主要介绍应用侧调用前端页面函数,应用侧可以通过runJavaScript()和runJavaScriptExt()方法调用前端页面的JavaScript相关函数。
2. 实现对以下指南文档中 https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/web/web-in-app-frontend-page-function-invoking.md 示例代码片段的工程化,保证指南中示例代码与sample工程文件同源。
### 效果预览
| 主页 | 绿色字体 | 红色字体 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
|
|
|
使用说明
1. 点击 runJavaScript 按钮,文本字体变绿,此操作调用前端 htmlTest() 方法实现。
2. 点击 runJavaScriptCodePassed 按钮,通过向前端传递自定义JavaScript代码改变颜色。
3. 点击 Click Me! 按钮触发前端 callArkTS() 函数,开启交互逻辑,文本字体变红。
### 工程目录
```
entry/src/main/
|---ets
|---|---entryability
|---|---|---EntryAbility.ets
|---|---pages
|---|---|---Index.ets // 首页
|---resources // 静态资源
|---ohosTest
|---|---ets
|---|---|---tests
|---|---|---|---Ability.test.ets // 自动化测试用例
```
### 相关权限
无。
# Entry2:
## 前端页面调用应用侧函数
### 介绍
1. 实现对以下指南文档中 https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/web/web-in-page-app-function-invoking.md 示例代码片段的工程化,保证指南中示例代码与sample工程文件同源。
### JavaScriptProxy
#### 介绍
1. 本示例主要介绍前端页面调用应用侧函数。在Web组件初始化使用javaScriptProxy()接口注册应用侧代码。
#### 效果预览
| 主页 | 触发callArkTS |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
|
|
|
使用说明
1. 点击deleteJavaScriptRegister按钮从 Web 端删除已注册对象。
1. 点击Click Me!按钮,触发callArkTS函数。
### Promise_one
#### 介绍
1. 本示例主要介绍前端页面调用应用侧函数,Promise使用场景,在应用侧new Promise。
#### 效果预览
| 主页 |
| ------------------------------------------------------ |
|
|
使用说明
1. 点击refresh按钮刷新网页。
2. 点击Register JavaScript To Window按钮将testObj注册到前端。
3. 点击deleteJavaScriptRegister按钮删除Web端注册的testObjName对象。
4. 点击Click Me!按钮,触发callArkTS函数。
### Promise_two
#### 介绍
1. 本示例主要介绍前端页面调用应用侧函数,Promise使用场景,在前端页面new Promise。
#### 效果预览
| 主页 |
| ------------------------------------------------------ |
|
|
使用说明
1. 点击refresh按钮刷新网页。
2. 点击Register JavaScript To Window按钮将 testObj 注册到前端。
3. 点击deleteJavaScriptRegister按钮删除Web端注册的testObjName对象。
4. 点击Click Me!按钮,触发callArkTS函数。
### RegisterJavaScriptProxy
#### 介绍
1. 本示例主要介绍前端页面调用应用侧函数,在Web组件初始化使用registerJavaScriptProxy()接口注册应用侧代码。
#### 效果预览
| 主页 | 触发callArkTS |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
|
|
|
使用说明
1. 点击refresh按钮刷新网页。
2. 点击Register JavaScript To Window按钮将 testObj 注册到前端。
3. 点击deleteJavaScriptRegister按钮删除Web端注册的testObjName对象。
4. 点击Click Me!按钮,触发callArkTS函数。
### UsageOfComplexTypes_one
#### 介绍
1. 本示例主要介绍前端页面调用应用侧函数,在应用侧和前端页面之间传递Array。
#### 效果预览
| 主页 |
| ------------------------------------------------------------ |
|
|
使用说明
1. 点击refresh按钮刷新网页。
2. 点击Register JavaScript To Window按钮将 testObj 注册到前端。
3. 点击deleteJavaScriptRegister按钮删除Web端注册的testObjName对象。
4. 点击Click Me!按钮,触发callArkTS函数。
### UsageOfComplexTypes_two
#### 介绍
1. 本示例主要介绍前端页面调用应用侧函数,应用侧和前端页面之间传递基础类型,非Function等复杂类型。
#### 效果预览
| 主页 |
| ------------------------------------------------------------ |
|
|
使用说明
1. 点击refresh按钮刷新网页。
2. 点击Register JavaScript To Window按钮将 testObj 注册到前端。
3. 点击deleteJavaScriptRegister按钮删除Web端注册的testObjName对象。
4. 点击Click Me!按钮,触发callArkTS函数。
### UsageOfComplexTypes_three
#### 介绍
1. 本示例主要介绍前端页面调用应用侧函数,应用侧调用前端页面的Callback。
#### 效果预览
| 主页 |
| ------------------------------------------------------------ |
|
|
使用说明
1. 点击refresh按钮刷新网页。
2. 点击Register JavaScript To Window按钮将 testObj 注册到前端。
3. 点击deleteJavaScriptRegister按钮删除Web端注册的testObjName对象。
4. 点击Click Me!按钮,触发callArkTS函数。
### UsageOfComplexTypes_four
#### 介绍
1. 本示例主要介绍前端页面调用应用侧函数,应用侧调用前端页面Object里的Function。
#### 效果预览
| 主页 |
| ------------------------------------------------------------ |
|
|
使用说明
1. 点击refresh按钮刷新网页。
2. 点击Register JavaScript To Window按钮将 testObj 注册到前端。
3. 点击deleteJavaScriptRegister按钮删除Web端注册的testObjName对象。
4. 点击Click Me!按钮,触发callArkTS函数。
### UsageOfComplexTypes_five
#### 介绍
1. 本示例主要介绍前端页面调用应用侧函数,前端页面调用应用侧Object里的Function。
#### 效果预览
| 主页 |
| ------------------------------------------------------------ |
|
|
使用说明
1. 点击refresh按钮刷新网页。
2. 点击Register JavaScript To Window按钮将 testObj 注册到前端。
3. 点击deleteJavaScriptRegister按钮删除Web端注册的testObjName对象。
4. 点击Click Me!按钮,触发callArkTS函数。
### 工程目录
```
entry2/src/main/
|---ets
|---|---entry2ability
|---|---|---Entry2Ability.ets
|---|---pages
|---|---|---Index.ets // 首页
|---|---|---JavaScriptProxy
|---|---|---Promise_one
|---|---|---Promise_two
|---|---|---RegisterJavaScriptProxy
|---|---|---UsageOfComplexTypes_one
|---|---|---UsageOfComplexTypes_two
|---|---|---UsageOfComplexTypes_three
|---|---|---UsageOfComplexTypes_four
|---|---|---UsageOfComplexTypes_five
|---resources // 静态资源
|---ohosTest
|---|---ets
|---|---|---tests
|---|---|---|---Ability.test.ets // 自动化测试用例
```
### 相关权限
[ohos.permission.INTERNET](https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioninternet)
# Entry3:
## 建立应用侧与前端页面数据通道
### 介绍
1. 实现对以下指南文档中 https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/web/web-app-page-data-channel.md 示例代码片段的工程化,保证指南中示例代码与sample工程文件同源。
### 效果预览
| 主页 | 向 HTML 发送消息 | 向 ArkTS 发送消息 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
|
|
|
使用说明
1. 点击postMessage按钮初始化消息端口。
2. 点击SendDataToHTML按钮从 ArkTS 向 ETS 发送消息。
3. 点击SendToEts按钮,从 ETS 向 ArkTS 发送消息。
### 工程目录
```
entry3/src/main/
|---ets
|---|---entry3ability
|---|---|---Entry3Ability.ets
|---|---pages
|---|---|---Index.ets // 首页
|---resources // 静态资源
|---ohosTest
|---|---ets
|---|---|---tests
|---|---|---|---Ability.test.ets // 自动化测试用例
```
### 相关权限
无。
# Entry4:
## 应用侧与前端页面的相互调用(C/C++)
### 介绍
1. 实现对以下文档中提供的 https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/web/arkweb-ndk-jsbridge.md 示例代码片段的工程化,保证指南中示例代码与sample工程文件同源。
### 效果预览
| 主页 |
| ------------------------------------------------------------ |
|
|
使用说明
1. 点击 runJS hello按钮调用testNapi.runJavaScript。
2. 点击test Native Development Kit method1 !按钮调用testNdkProxyObjMethod1。
3. 点击test Native Development Kit method2 !按钮调用testNdkProxyObjMethod2。
### 工程目录
```
entry4/src/main/
|---cpp // cpp文件夹
|---ets
|---|---entry4ability
|---|---|---Entry4Ability.ets
|---|---pages
|---|---|---Index.ets // 首页
|---resources // 静态资源
|---ohosTest
|---|---ets
|---|---|---tests
|---|---|---|---Ability.test.ets // 自动化测试用例
```
### 相关权限
无。
# Entry5:
## 建立应用侧与前端页面数据通道(C/C++)
### 介绍
1. 实现对以下文档中提供中 https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/web/arkweb-ndk-page-data-channel.md 示例代码片段的工程化,保证指南中示例代码与sample工程文件同源。
### 效果预览
| 主页 | 通信 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
|
|
|
使用说明
1. 点击createNoControllerTagPort按钮ETS侧调用testNapi.createWebMessagePorts("noTag")。
2. 点击createPort按钮ETS侧调用 testNapi.createWebMessagePorts(this.webTaag)。
3. 点击setHandler按钮ETS侧调用testNapi.setMessageEventHandler(this.webTag(3)。
4. 点击setHandlerThread按钮ETS侧调用 testNapi.setMessageEventHandlerThread(this.webTag)。
5. 点击SendString按钮ETS侧清空h5Log,调用 testNapi.postMessage(this.webTag),通过消息端口将内容发送到前端页面。
### 工程目录
```
entry5/src/main/
|---cpp // cpp文件夹
|---ets
|---|---entry5ability
|---|---|---Entry5Ability.ets
|---|---pages
|---|---|---Index.ets // 首页
|---resources // 静态资源
|---ohosTest
|---|---ets
|---|---|---tests
|---|---|---|---Ability.test.ets // 自动化测试用例
```
### 相关权限
无。
## 依赖
不涉及。
## 约束与限制
1. 本示例仅支持标准系统上运行,支持设备:RK3568。
2. 本示例支持API14版本SDK,SDK版本号(API Version 14 Release)。
3. 本示例需要使用DevEco Studio 版本号(5.0.1Release)才可编译运行。
## 下载
如需单独下载本工程,执行如下命令:
```
git init
git config core.sparsecheckout true
echo code/DocsSample/ArkWeb/UseFrontendJSApp > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
```