L'application intégrée en iframe doit intégrer ce script sendIframeHeight.js
:
function sendIframeHeight() {
const height = document.body.scrollHeight;
window.parent.postMessage(
{ type: 'iframeHeight', height: height },
'*'
);
}
// Envoie la hauteur au chargement
window.addEventListener('load', sendIframeHeight);
// Envoie la hauteur si le contenu change
const observer = new MutationObserver(sendIframeHeight);
observer.observe(document.body, { childList: true, subtree: true });
Dans la page intégrant l'iframe :
<iframe class="iframeResize" style="border: none; width: 100%; height: 100vh" src="..."></iframe>
<script>
window.addEventListener('message', function(event) {
if (event.data.type === 'iframeHeight') {
const iframeResize = document.querySelectorAll('.iframeResize');
iframeResize.forEach(iframe => {
iframe.style.height = event.data.height + 'px';
});
}
});
</script>