iframe 内嵌 grafana
2025-05-24 19:44:11
iframe 内嵌 grafana 时存在状态无法保存以及界面显示不符合预期的情况,本文主要解决该问题。
遇到的问题
- 无法保存最后的状态,如果标签切出再进入,则状态丢失,期望保留;
- 按 esc 键会退出 kiosk 模式;
解决状态保存问题
解决状态保存有两个办法:
- 通过 keepalive 类组件,保存状态;
- 记住上次退出时的 url;
首先,我使用的是 react + antd,keepalive 组件确认对 iframe 无效,且无法解决;所以只能用方案二; 使用方案二,一般需要这样的代码:
然后发现,如果跨域就无法读取 href,即使是不同的子域名也不行,域名必须完全一样,且跨域相关 header 对 iframe 无效,如果要域名完全一样,那么 grafana 只能通过子路劲请求,比如:http://localhost:3000/loongGrafana
通过子路径反代 grafana
修改 /etc/grafana/grafana.ini 文件,具体修改内容如下:
修改前,grafana 通过 http://localhost:3000 访问,修改后通过 http://localhost:3000/loongGrafana
grafana 解决 esc 键退出 kiosk 的问题
该问题好解决,js 代码如下:
|
|
这里,之所以在 url 中有 viewPanel 时,不禁用 esc 是因为面板可以放大,放大后,可以通过按 esc 键退出,这个不能仅用,放大面板,可以通过快捷键 v 来完成;完整的 js 代码如下:
|
|
最后更新于