客户端脚本
如果无法播放,点此直接下载/打开
介绍
客户端脚本支持对象在不同页面,比如详情页,新建页,列表页的特定时机运行一段JavaScript脚本,基于CCDK的桥接能力,实现更多的自定义功能。
进入脚本设置页面
- 登录系统,点击右上角人头像,选择开发者平台按钮,此按钮目前只开放给管理员简档用户。

- 选择左侧:扩展——》客户端脚本

新建脚本
- 点击右上角新建,填入以下信息,点击下一步,页面与事件关系

- 代码输入区,输入以下代码,点击右上角保存,查看CCDK更多教程
$CCDK.CCMessage.showMessage('hello cloudCC')
回到前台查看效果
- 点击客户菜单,选择任意一条数据进入详情页

- 会看到提示信息

示例
为了方便开发者更方便控制元素,我们在平台的关键dom上添加了devid自定义属性,此ID使用特定的业务ID绑定,可以标记出系统的特定元素,
用于控制查看页面结构说明
案例说明
- 禁用编辑页的“分级”字段

第一步:查看devid
- F12打开浏览器控制台,选择元素,如果没有可能收起在更多中了

- 使用元素选择器选取元素,点击元素选择器,点击页面上的元素

- 查看样式名称,复制出来备用
第二步:创建客户端脚本
- 选择如下配置

- 创建脚本内容
- 保存脚本,回到客户详情页查看结果
// 方式一
let style = document.createElement('style');
style.type = 'text/css';
style.innerHTML='[devid="ffe201100003855g6Ipz"]{pointer-events:none}';
document.getElementsByTagName('head').item(0).appendChild(style);
// 方式二
let dd = document.querySelector('div[devid="ffe201100003428r65pk"]')
if(dd){
dd.style.display="none"
}第三步:效果展示

示例:隐藏详情页基本信息某个字段
为了方便开发者更方便控制元素,我们在平台的关键dom上添加了devid自定义属性,此ID使用特定的业务ID绑定,可以标记出系统的特定元素,用于控制查看页面结构说明
隐藏”主联系人字段“

查看devid
- F12打开浏览器控制台,选择元素,如果没有可能收起在更多中了

- 使用元素选择器选取元素,点击元素选择器,点击页面上的元素

- 查看devid,复制出来备用

创建客户端脚本
- 选择如下配置

- 创建脚本内容
- 隐藏元素,并占用空间
- 隐藏元素,并且不占用空间
- 保存脚本,回到客户详情页查看结果
let style = document.createElement('style');
style.type = 'text/css';
style.innerHTML='[devid="ffe20220523account01"]{display:none !important}';
document.getElementsByTagName('head').item(0).appendChild(style); let style = document.createElement('style');
style.type = 'text/css';
style.innerHTML='[devid="ffe20220523account01"]{visibility:hidden !important}';
document.getElementsByTagName('head').item(0).appendChild(style); 效果

示例:移动页面元素到其他位置
为了方便开发者更方便控制元素,我们在平台的关键dom上添加了devid自定义属性,此ID使用特定的业务ID绑定,可以标记出系统的特定元素,用于控制查看页面结构说明

查看devid
- F12打开浏览器控制台,选择元素,如果没有可能收起在更多中了

- 使用元素选择器选取元素,点击元素选择器,点击页面上的元素

- 查看devid,复制出来备用
编写客户端脚本
// 获取要移动的节点
const moveNode = document.querySelector('[devid="aee2024EFBBA5EEfs1Ta"]');
// 移动到目标节点
const targetNode = document.querySelector('[devid="adf2024D33E03DA6xzBj"]');
// 目标节点的父节点
const targetParentNode = targetNode.parentNode;
//将需要移动的节点 插入到 父节点下的目标节点前面
targetParentNode.insertBefore(moveNode,targetNode)添加脚本后的页面

注意
- 需要考虑dom节点还未渲染导致没有找到的情况,建议使用定时器查找dom,存在时在进行操作
- 具体情况可能受加载、网络影响,编写完对应脚本需要进行测试
进阶:页面与脚本事件的对应关系
系统所有的页面大致分为增删改查四类页面,每种页面支持不同的事件,用于实现不同的需求
| 页面 | 事件 | 平台支持 | 参数 | 触发时机 | 状态 |
|---|---|---|---|---|---|
| 全局类型 | onCreate | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
启动项目时(业务代码还没有执行) | 完成 |
| onLoad | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
展示UI时(首屏页面加载完毕) | 完成 | |
| onDestroy | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
关闭Tub签或更改流程时 | 完成 | |
视图页(列表)![]() |
onCreated | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
进入视图页,但dom还没有创建的时候 | 完成 |
| onLoad | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
首次进入,或是点击搜索获取列表数据后 | 完成 | |
| onDestroy | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
离开此页面,比如进入详情页 | 完成 | |
新建页/编辑页![]() ![]() |
onCreated | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
进入新建/编辑页,但dom还没有创建的时候 | 完成 |
| onLoad | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
获取详情信息页面渲染后 | 完成 | |
| onDestroy | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
离开此页面,关闭的时候 | 完成 | |
| beforeSave | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj - detailData详情页数据,key-value形式,可以修改 |
点击保存按钮时触发 | 完成 | |
| afterSave | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
保存接口请求完成后触发 | 完成 | |
| onChange | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
编辑某个字段,光标失焦点,并且value有变化时 | 完成 | |
详情页 ![]() |
onLoad | PC/H5 | Function test($CCDK,obj={}) - $CCDK全局工具 - obj预留配置对象 |
获取详情基本数据,dom渲染后 | 完成 |



