Click Script 点击脚本

Click Script 属于 Interactions(交互)类行为。把它拖到左侧树的某个组件上后,运行时用户每次点击该组件都会执行配置的 JavaScript。它适用于内置固定交互行为无法覆盖的自定义动作:在一次点击中完成确认、读标签、写标签、修改其它组件颜色或文本,或跳转页面。脚本可访问被点击对象(object / objects / event)以及 tag、page、presentation、shape、qtedit、globals、escript 等运行时对象。

交互

交互: Click Script 点击脚本

给组件绑定一段“点击时运行的 JavaScript”,用来做弹窗确认、读/写标签、改组件样式或跳转页面等自定义动作,并可用 Condition 控制是否允许点击。

功能说明

Click Script 属于 Interactions(交互)类行为。把它拖到左侧树的某个组件上后,运行时用户每次点击该组件都会执行配置的 JavaScript。它适用于内置固定交互行为无法覆盖的自定义动作:在一次点击中完成确认、读标签、写标签、修改其它组件颜色或文本,或跳转页面。脚本可访问被点击对象(object / objects / event)以及 tag、page、presentation、shape、qtedit、globals、escript 等运行时对象。

使用方法:编辑器里填什么

双击该行为打开编辑器。上方 General 显示 Behavior Name(行为名,可改)和 Component Name(所属组件,只读);Event 里 Trigger 固定为 Click(只读)。真正要填的是右侧 Interaction Setup 里的两个代码框:

  • Click Script:点击时运行的脚本主体。可写多行逻辑(if、读写标签、改组件、弹窗等);如果脚本是多行并且需要中途退出或返回结果,用 return 结束。
  • Condition:是否允许点击的开关表达式,默认 true;。只在这里写“能立刻算出真/假的一句表达式”,例如 ReadTagBoolean(...) 或比较式;为 false 时该次点击不执行。
  • 脚本里可用的标签方法:ReadTagBoolean/Integer/Double/String、WriteTagBoolean/Integer/Double/String,以及 qtedit.* 系列(setComponentFill / setComponentText / setComponentVisible / openPage / openScreen 等)。
  • 异步方法(fetch、setTimeout、setInterval 等)只能写在 Click Script 这种脚本体里,不要写进 Condition(同步求值位)。
  • 脚本快捷方法按钮会按当前光标所在框给片段:在 Click Script 给完整脚本片段,在 Condition 给短表达式片段。
// Click Script
var v = prompt("输入设定值", "0");
if (v === null || v === "") { return; }
var n = parseInt(v, 10);
if (isNaN(n)) { alert("请输入整数"); return; }
WriteTagInteger("PLC1.PUMP.SETPOINT", n);

// Condition
ReadTagBoolean("PLC1.PUMP.ALLOW_OP", false)

适用场景

适合“一次点击需要连续执行多个步骤”或“固定行为无法覆盖”的场景:

  • 确认后再下发:先 confirm/prompt 让操作员确认或输入,再 WriteTagInteger/WriteTagBoolean 写入。
  • 点击联动多个组件:一次点击里改若干组件的填充色、文本或显示隐藏(qtedit.setComponentFill / setComponentText / setComponentVisible)。
  • 带前置条件的操作按钮:用 Condition 接上“允许操作/已登录/在手动模式”等标签,未满足时这次点击直接不执行。

边界与易错点

常见注意事项:

  • 写标签不等于成功:宿主机可能要权限校验、确认框、原因输入或异步处理,甚至拒绝。不要假设“调用了就写成功、就立即生效”。
  • Condition 是同步表达式位:只放能立刻得到值的一句话,别放 fetch() 这类返回 Promise 的异步代码,否则判断会出错。
  • 多行 Click Script 记得用 return 收尾,尤其是需要提前退出(如用户取消)时。
  • 跳转不要写相对磁盘路径:同包用 qtedit.openPage("页名"),跨画面包用 qtedit.openScreen("SCREEN_CODE"),外链才用网址。
Click Script 点击脚本行为编辑器
图示 1: Click Script 编辑器

在 Click Script 框写点击时运行的脚本,用 Condition 控制是否允许点击。