所属产品: Mingcedar Studio DESIGNER
先决定脚本入口 | Mingcedar Studio
脚本入口决定运行时机和可用上下文。
<section id="script-placement" class="docs-block docs-block-intro docs-block-current"> <span class="section-kicker">入口</span> <h2>先决定脚本入口</h2> <p>脚本入口决定运行时机和可用上下文。</p> <div class="docs-detail-list"> <article id="script-placement-item-1" class="docs-detail-row"> <strong>页面脚本的配置范围</strong> <p>脚本按页面维护,没有可编辑的项目级脚本文档。当前页逻辑放在 Page Script,跨页复用使用宿主 runtime 或模板。</p> <ul> <li>页面逻辑放当前页 Page Script</li><li>跨页复用优先交给宿主 runtime 或模板</li><li>单页流程不应作为全局公共逻辑维护</li> </ul> <pre class="docs-code-block"><code>function openAlarmPage() {
hqVisuDesigner.openPage("Alarm");
}</code></pre> </article><article id="script-placement-item-2" class="docs-detail-row"> <strong>Page Script:当前页逻辑</strong> <p>Page Script 处理当前页初始化、局部变量、数据整理、表格和交互逻辑。</p> <ul> <li>适合页面打开后的初始化</li><li>适合当前页数据整理</li><li>适合当前页表格和局部交互逻辑</li> </ul> <pre class="docs-code-block"><code>window.hqVisuDesignerPageReady = function(ctx) {
var rows = window.tableRows || [];
hqVisuDesigner.setComponentText("RowCountText", String(rows.length));
};</code></pre> </article><article id="script-placement-item-3" class="docs-detail-row"> <strong>Setup Script:准备行为使用的数据</strong> <p>Setup Script 读取 Tag、计算中间值,供 Condition、Value 或 Display Text 使用。旧配置名为 Definition;设备写入由点击行为触发。</p> <ul> <li>读取 Tag 并计算中间值</li><li>由 Condition / Value / Display Text 返回结果</li><li>同页共用的变量和函数放在 Page Script</li> </ul> <pre class="docs-code-block"><code>var running = ReadTagInteger("PLC_LINE01.PUMP01.RUN", 0);
var alarm = ReadTagBoolean("PLC_LINE01.PUMP01.ALARM", false);
var ready = running === 1 && !alarm;</code></pre> </article><article id="script-placement-item-4" class="docs-detail-row"> <strong>Click Script 与 Hover Script:对象级动作</strong> <p>Click Script 处理点击、跳页、写值和弹窗;Hover Script 处理悬停提示、预览和样式变化。页面初始化使用 Page Script。</p> <ul> <li>点击动作优先放 Click Script</li><li>悬停反馈优先放 Hover Script</li><li>对象脚本不承担页面初始化职责</li> </ul> <pre class="docs-code-block"><code>// Click Script
hqVisuDesigner.openPage("Alarm");
// Hover Script -> Mouse Over
object.style.opacity = "0.75";</code></pre> </article><article id="script-placement-item-5" class="docs-detail-row"> <strong>表达式字段:必须同步返回结果</strong> <p>表达式字段须同步返回布尔值、文本、颜色或数字。fetch、Promise 和定时器放在 Page Script、对象脚本或 hqVisuDesignerPageReady 中,将结果存入页面变量。设备写入由用户操作触发。</p> <ul> <li>布尔字段:返回 true / false</li><li>数值字段:返回 number</li><li>文本和颜色字段:返回 string</li><li>异步逻辑不直接作为表达式返回值</li> </ul> <pre class="docs-code-block"><code>// Page Script
function pressureColor() {
var pressure = ReadTagDouble("PLC_LINE01.PUMP01.PRESSURE", 0);
return pressure > 8 ? "#dc2626" : "#16a34a";
}
// Script Color / Fill
pressureColor()</code></pre> </article> </div> <div class="docs-note-grid"> <figure id="script-placement-image-1" class="docs-note-card manual-doc-image-card"> <img src="/WEB_img/HQPPT/ScriptWorkspaceForm.png" alt="页面脚本入口" loading="lazy" decoding="async"> <figcaption> <strong>页面脚本入口</strong> <p>页面级逻辑优先放入 Page Script,避免分散在大量对象脚本中。</p> </figcaption> </figure><figure id="script-placement-image-2" class="docs-note-card manual-doc-image-card"> <img src="/WEB_img/HQPPT/MouseBehaviorEditorForm.png" alt="点击脚本入口" loading="lazy" decoding="async"> <figcaption> <strong>点击脚本入口</strong> <p>按钮或对象动作优先放点击脚本,职责会更清晰。</p> </figcaption> </figure><figure id="script-placement-image-3" class="docs-note-card manual-doc-image-card"> <img src="/WEB_img/HQPPT/MouseBehaviorEditorForm.png" alt="悬停脚本入口" loading="lazy" decoding="async"> <figcaption> <strong>悬停脚本入口</strong> <p>悬停类交互和提示行为更适合放在这里。</p> </figcaption> </figure> </div> </section>