Click / Hover / Press-Release Script:按真实触发阶段选择脚本 | HQ VISU Designer

Click 处理一次点击,Hover 处理移入移出,Press/Release 处理按下与松开。能通过标准行为配置的动作仍应优先配置,脚本负责特例和组合逻辑。

交互行为脚本
脚本

Click / Hover / Press-Release Script:按真实触发阶段选择脚本

Click 处理一次点击,Hover 处理移入移出,Press/Release 处理按下与松开。能通过标准行为配置的动作仍应优先配置,脚本负责特例和组合逻辑。

Click Script 适合什么

局部动画、状态提示、自定义校验、复杂流程跳转、输入确认后二次处理,这些场景适合 Click Script。当一个动作不只是写一个值或跳转一个页面时,可以通过脚本组织组合逻辑。

Click Script 常见写法

Click Script 适合先读页面输入、再判断条件、再调用标准方法。脚本中仍应优先调用 hqVisuDesigner.openPage、hqVisuDesigner.openDiagnosis、hqVisuDesigner.writeTag 等明确方法,而不是把全部逻辑写成不可复用的 DOM 操作。

  • 读取输入模板:template.getValue("Input Template")
  • 确认条件:if (...) return;
  • 写值:hqVisuDesigner.writeTag(payload)
  • 跳转:hqVisuDesigner.openPage("Alarm")
var value = template.getValue("SetpointInput");
if (value === "") {
  hqVisuDesigner.setComponentText("Message", "请输入设定值");
  return;
}

hqVisuDesigner.writeTag({
  TagName: "Device.SETPOINT",
  Value: Number(value),
  PermissionCode: "io:write",
  RequireConfirm: true
});
Hover Script 适合什么

悬停高亮、预览、局部透明度变化、帮助提示和短时反馈都适合 Hover Script。它最好的用法是做轻量反馈,而不是承载重业务逻辑;运行端不会为 Hover Script 提供设备写入能力。

// Mouse Over
object.style.opacity = "0.7";

// Mouse Out
object.style.opacity = "1";
Press/Release Script 适合什么

需要区分按下和松开时使用 Press/Release Script。Pointer Press 在主指针按下时执行;Pointer Release 在松开、取消或丢失指针捕获时执行。两段脚本必须成对设计,释放段负责复位。

  • 点动、按住执行、松手停止
  • 按压态显示与恢复
  • Pointer Press / Pointer Release 都是完整脚本
  • 没有单独 Condition 字段
  • 不能替代 PLC 联锁、急停和安全回路
// Pointer Press
WriteTagBoolean("<CommandTag>", true);

// Pointer Release
WriteTagBoolean("<CommandTag>", false);
脚本优先于配置的场景

当目标需要动态计算、需要先校验输入、需要组合多个方法、或者需要在一次点击里顺序执行多个动作时,脚本通常更合适。比如先读模板值,再判断是否合法,再写 Tag,再切换页面。

不应优先使用脚本的场景

如果只是打开页面、写一个 Tag、打开诊断窗或切换一个页面变量,应优先使用明确配置行为。这样维护人员可以直接从界面理解动作意图,不需要先阅读脚本逻辑。

Click Script
Click Script

复杂动作和局部特例更适合 Click Script,但简单动作仍优先配置行为。

Hover Script
Hover Script

Hover Script 最适合轻量反馈,而不是承担重业务逻辑。

Press/Release Script 编辑器结构
Press/Release Script

实际模式会把两个脚本框显示为 Pointer Press 和 Pointer Release;释放段负责安全复位。

脚本片段选择器
脚本片段选择器

脚本片段会根据当前输入位置插入短表达式或完整脚本,适合减少把代码写到错误字段的问题。