我正在尝试将 GoodData 仪表板嵌入到我的应用程序中的 iframe 中,并且效果很好,但是该仪表板上的每个选项卡上都有不同数量的报告,我想根据实际仪表板内容使 iframe 高度动态化。
有没有办法做到这一点?GoodData 是否以某种方式传播了呈现仪表板所需的空间?
谢谢你。
事实上,有一个名为“ui.frameinfo”的 postMessage() 发送事件,您可以使用它来检测仪表板选项卡的高度(使用dashboard.html 时)。每次选项卡更改其高度时都会发送它。
以下侦听器应打印出 iframe 的内部高度:
window.addEventListener('message', function(e) {
var message;
try {
message = JSON.parse(e.data);
} catch (e) {
// valid messages are JSON
message = {};
}
// drop other than GoodData events
if (!message.gdc) return;
if (message.gdc.name === 'ui.frameinfo') {
console.log('frame height:', message.gdc.data.height);
}
}
请注意,这还不是官方功能,可能会发生变化。