SuperAPI AI 工具集

client-scripts

编程与开发

查看项目

更新于 10-16 01:56

技能介绍

用途

client-scripts 面向 ServiceNow 平台的客户端脚本开发,说明如何编写运行在用户浏览器中、用于控制表单行为的脚本。与服务端脚本不同,客户端脚本在现代浏览器中可以使用现代 JavaScript(ES6+)。

主要能力

客户端脚本类型

类型 运行时机 适用场景
onLoad 表单加载 设置默认值、隐藏/显示字段、初始化设置
onChange 字段值变化 响应用户输入、级联更新
onSubmit 表单提交 保存前校验
onCellEdit 列表单元格编辑 校验行内编辑

g_form API

取值与赋值:使用 g_form.getValue 获取字段值,g_form.getDisplayValue 获取引用字段的显示值;使用 g_form.setValue 设置值(引用字段可带显示值),g_form.clearValue 清空字段。

字段可见性与状态:g_form.setVisible 显示/隐藏字段,g_form.setDisplay 控制是否从 DOM 移除;g_form.setMandatory 设置必填;g_form.setReadOnly 设置只读;g_form.setDisabled 设置禁用(置灰但可见)。

消息与校验:g_form.showFieldMsg 与 g_form.hideFieldMsg 控制字段级消息;g_form.addInfoMessage、g_form.addErrorMessage、g_form.clearMessages 控制表单级消息;g_form.flash 可让字段闪烁以吸引注意。

区块与标签:g_form.setSectionDisplay 折叠或展开区块,g_form.setLabelOf 修改字段标签。

常见模式

文档给出多种模式,包括:onLoad 设置默认值(仅新记录、设置默认优先级、把调用者设为当前用户、按角色隐藏内部字段);onChange 级联更新(值变化时清空子字段、按分类自动设置优先级并切换只读);onChange 配合 GlideAjax 从服务端取数据并回填表单;onSubmit 校验(邮箱格式、解决时要求关闭备注、高优先级提交前确认);按条件设置必填字段(如分类为硬件时要求资产标签,分类为软件时要求应用名称)。

GlideAjax 服务端通信

文档展示客户端脚本通过 GlideAjax 调用服务端 Script Include 的完整写法,包括 addParam 传参、getXMLAnswer 回调处理响应,以及服务端基于 AbstractAjaxProcessor 的 Script Include 示例(查询相关事件并返回 JSON)。

g_user 对象

可获取当前用户的 userName、userID、firstName、lastName、getFullName;可通过 hasRole、hasRoleExactly、hasRoleFromList 进行角色检查。

性能最佳实践

  1. 减少服务端调用:把多个 GlideAjax 调用合并为一次返回全部数据的调用。
  2. 使用 isLoading 参数:在表单加载时跳过不必要的逻辑。
  3. 对快速变化做防抖:用 setTimeout 等待输入停止后再执行开销较大的操作(示例为 300ms)。

常见错误

文档列出常见错误及解决方案:忘记 isLoading 判断会导致脚本在加载时多余执行;阻塞式 onSubmit 在慢校验时会让界面卡住;GlideAjax 缺少错误处理会造成静默失败;只在单一浏览器测试会带来跨浏览器问题;直接操作 DOM 会因界面更新而失效,应改用 g_form API。

适用场景与限制

适用于需要在 ServiceNow 表单上控制字段行为、做前端校验、按条件显隐字段或与服务端轻量交互的场景。文档未说明具体的许可、收费、价格或平台版本要求,这些信息暂未提供。