开源工业组态 FUXA 实战:嵌入第三方系统 + 缩放拖动 + 隐藏菜单后找回编辑页

前言

FUXA 是一款轻量、开源、基于 Web 的现代化工业组态 / HMI/SCADA 软件,支持 MQTT、Modbus、OPC UA 等多种工业协议,可快速搭建设备监控、数据可视化、大屏组态页面。

在实际项目集成中,我们经常需要将 FUXA 页面嵌入到自有平台或第三方系统,并隐藏原生菜单、实现更友好的交互操作。本文基于真实开发场景,把最常用的配置、代码和问题解决方案整理成文,方便大家直接复用。

一、FUXA 嵌入第三方系统,隐藏菜单与导航栏

FUXA 默认会显示顶部导航、侧边栏和底部切换按钮,嵌入 iframe 时会显得杂乱。我们可以通过两种方式实现纯净画布模式

1.1 URL 参数方式(推荐,一行生效)

在访问视图的 URL 后增加参数:

复制代码
embedded=true

完整示例:

复制代码
http://192.168.1.100:1881/home?view=你的视图ID&embedded=true
  • embedded=true:自动隐藏所有菜单、导航、切换按钮
  • view=视图ID:直接打开指定组态画面
  • 适合 iframe 嵌入,无多余元素

1.2 iframe 嵌入代码示例

复制代码
<iframe 
    src="http://192.168.1.100:1881/home?view=xxx&embedded=true"
    width="100%"
    height="850px"
    frameborder="0"
></iframe>

1.3 全局配置永久隐藏菜单

  1. 进入 FUXA 编辑页面
  2. 打开 Settings → Layout
  3. 关闭以下选项:
    • Show Navigation
    • Show Button
  4. 保存并重启 FUXA

二、嵌入后实现画布:鼠标缩放 + 按住拖动

隐藏菜单后,FUXA 自带的缩放平移控件不可用。通过外层容器 + JavaScript 可实现流畅的缩放与拖动,不影响内部按钮点击。

完整可直接使用代码

复制代码
<div id="dragContainer" style="
    width: 100%;
    height: 900px;
    overflow: hidden;
    position: relative;
    background: #0b1220;">
    <iframe id="fuxaFrame"
        src="http://192.168.1.100:1881/home?view=xxx&embedded=true"
        width="100%" height="100%" frameborder="0"
        style="position:absolute; left:0; top:0; transform-origin:center center; cursor:grab;">
    </iframe>
</div>

<script>
let scale = 1;
let scaleStep = 0.1;
let posX = 0, posY = 0;
let isDragging = false;
let startX, startY;

const container = document.getElementById('dragContainer');
const iframe = document.getElementById('fuxaFrame');

// 滚轮缩放
container.addEventListener('wheel', (e) => {
    e.preventDefault();
    scale += e.deltaY > 0 ? -scaleStep : scaleStep;
    scale = Math.max(0.5, Math.min(scale, 3));
    updateTransform();
});

// 鼠标拖动
container.addEventListener('mousedown', (e) => {
    isDragging = true;
    startX = e.clientX - posX;
    startY = e.clientY - posY;
    iframe.style.cursor = 'grabbing';
});

window.addEventListener('mousemove', (e) => {
    if (!isDragging) return;
    posX = e.clientX - startX;
    posY = e.clientY - startY;
    updateTransform();
});

window.addEventListener('mouseup', () => {
    isDragging = false;
    iframe.style.cursor = 'grab';
});

function updateTransform() {
    iframe.style.transform = `translate(${posX}px, ${posY}px) scale(${scale})`;
}
</script>

实现效果

  • 鼠标滚轮:画布放大 / 缩小(0.5~3 倍限制)
  • 鼠标按住拖动:画布自由平移
  • 兼容第三方系统、大屏展示、组态面板

三、隐藏菜单后,如何找回 FUXA 编辑页面?

隐藏菜单后,界面上没有任何可进入编辑模式的入口,很多人会误以为配置丢失。

3.1 最快捷方法:直接访问编辑器路径

FUXA 编辑页面有固定路由,直接在浏览器访问:

复制代码
http://你的FUXA_IP:1881/editor

无需任何菜单按钮,一键进入编辑界面。

3.2 恢复菜单按钮(永久解决)

  1. 通过 /editor 进入编辑页
  2. 进入 Settings → Layout
  3. 重新开启:
    • Show Button
    • Show Navigation
  4. 保存设置,底部快捷切换按钮即可恢复

3.3 从视图页手动跳转

打开任意视图页面,将地址栏中的 /home 改为 /editor 即可进入编辑模式。

四、项目实用小技巧

  1. 视图 ID 获取 打开视图后,浏览器地址栏 view= 后面的字符串即为视图 ID。

  2. 跨域问题处理若 iframe 被拦截,需在 FUXA 服务端开启 CORS 跨域配置。

  3. 权限设置视图可配置匿名访问、只读权限,适合大屏展示、客户演示。

  4. MQTT 无缝接入FUXA 内置 MQTT 客户端,可直接连接 EMQX、Mosquitto 等 Broker,接入物联网设备极其方便。

  5. 部署方式支持 Node 直接运行、Docker 部署,轻量高效,低配服务器也能流畅运行。

五、总结

FUXA 作为开源轻量组态软件,在工业监控、物联网大屏、嵌入式可视化场景中优势非常明显:

  • 嵌入第三方系统使用 embedded=true 即可实现无菜单纯净展示
  • 通过简单 JS 即可实现画布缩放、拖动,提升大屏交互体验
  • 隐藏菜单后通过 /editor 路径可快速找回编辑页面
  • 协议丰富、配置简单,非常适合二次开发与系统集成
相关推荐
DO_Community13 小时前
DigitalOcean 的 AI 推理路由器是如何构建的
人工智能·开源·agent·claude·deepseek
冬奇Lab14 小时前
每日一个开源项目(第121篇):tiktoken - OpenAI 出品的极速 BPE 分词器
人工智能·开源·openai
幽络源小助理18 小时前
Vue3视频播放网站源码 纯前端Vite项目 影视站模板 – 幽络源源码
开源·源码
山川而川-R21 小时前
调用微信开源二维码模型
微信·开源
许彰午1 天前
Git实战——从零到团队协作以一个开源项目为例
git·开源
好好风格1 天前
这个开源项目,把本地大模型做成会说话的 Live2D 桌宠
人工智能·python·开源
X54先生(人文科技)1 天前
《元创力》纪实录·卷宗2.1 关联观察孤岛的回归:当一座“反AI叙事飞地”成为最后的堡垒
人工智能·架构·开源·ai写作·零知识证明
该昵称用户已存在1 天前
碳数据治理开源底座:MyEMS 能源中台的资产化架构与价值释放设计思路
架构·开源·能源
爱学习的鱼佬1 天前
告别内网模型接入烦恼!ModelStandardization:让 Open WebUI等工具无缝对接私有大模型
rust·开源·大模型·openai·openwebui·model api代理·内网部署
Real-Staok1 天前
开源多模态大模型全景对比:你的电脑,已经是 AI 工作站
人工智能·开源·电脑