Получение высоты окна встроенной панели инструментов Tableau - PullRequest
2 голосов
/ 16 июня 2020

После инициализации и полной загрузки моей информационной панели мне нужно получить высоту окна встраивания внутри iframe. В идеале я хотел бы получить innerHeight внутри onFirstInteractive, но не могу этого сделать.

function initViz() {
    var containerDiv = document.getElementById("vizContainer");
    var url = "http://public.tableau.com/views/RegionalSampleWorkbook/Storms";

    var options = {
        onFirstInteractive: function() {           
            // How do I get the height of the rendered contents?
        }
    };

    var viz = new tableau.Viz(containerDiv, url, options);
}

1 Ответ

1 голос
/ 20 июня 2020

Подпишитесь на событие VIZ_RESIZE, оно обеспечивает новые размеры iframe при инициализации и изменении размера:

viz.addEventListener(tableau.TableauEventName.VIZ_RESIZE, function(event) {
    console.log(event.getAvailableSize());
});

Что дает следующее:

console

When the iframe appears like this:

iframe

Если вы абсолютно хотите получить информацию из onFirstInteractive, вы можете сделать это:

onFirstInteractive: function(viz) {           
    const iframeStyle = viz.$1._impl.$1h.style;
    const { height, width } = iframeStyle;
    console.log({ height, width });
}

Но это немного взломано, потому что это решение использует свойства, которые не Предполагается, что это publi c, поэтому такой код может сломаться при будущих обновлениях библиотеки Tableau JS.

...