【发布时间】:2020-01-30 02:36:17
【问题描述】:
因此,就我而言,我使用 iframe 将 Grafana 附加到我的页面(这为我提供了美观且易于使用的图表)。
可能会注意到 Grafana 的 iframe 会在图表上的每次放大或缩小(使用鼠标单击)交互后触发我的 Angular 页面上的一种刷新,从而弄乱浏览器的历史记录。我在 Iframe 的 src 上没有看到任何更改来证明此页面刷新是合理的,并且它显然不会触发任何事情(例如,不会触发任何 onload)。
这是正常行为吗?我怎样才能防止这种情况发生?
我正在使用 Grafana 6.2.2 版和 Angular 6.1 的脚本仪表板。
【问题讨论】:
-
请提供Stackblitz 或任何其他minimal-reproducible-example 以重现您的错误。
-
@zerocewl 这样做有点复杂,因为我需要一个始终为 iframe 内容提供服务的 Grafana 实例。 Grafana 是一个图形应用程序,可以绘制来自多个数据库的数据。
-
如果 url 没有改变,很可能他们正在使用
pushState。因此,也许它很简单,就像在 iframe 中运行history.pushState = history.replaceState;以将您的 lib 正在使用的调用更改为不会创建新历史条目的调用。如果这不起作用,您仍然可以监视导航事件并尝试将它们返回()。当然,如果你想保持后退按钮的工作方式,管理所有排列会更复杂,但听起来 iframe 无论如何都应该是只显示的。 -
@dandavis 我认为它也应该只显示。我已经在 Grafana 的 Github 上打开了一个 issue,但他们并没有对此给予很大的关注。 github.com/grafana/grafana/issues/17614
标签: javascript html angular grafana