Изменение размера iframe через javascript

Всем здрасте!))

<iframe id="frame" src="data:text/html;base64,<?echo "$content";?>" frameborder="0" style="width: 100%; height: 200px;"></iframe>
<script>
    function resizeFrame(id){
        var height = window.innerHeight;
        var frame = document.getElementById(id);
        var scrollHeight = Math.max (
            frame.contentWindow.document.body.scrollHeight,
            frame.contentWindow.document.body.offsetHeight,
            frame.contentWindow.document.body.clientHeight
        );
        alert('1');
        if( height != scrollHeight ){
            frame.style.height = scrollHeight + 'px';
        }
    }
    document.getElementById('frame').onload = () => {
        const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
        (async () => {
            await sleep(1200);
            resizeFrame("frame");
        })();
    }
</script>

Не работает. Но если src сделать ссылкой на страницу - работает. Почему с base64 не работает и как изменить размер фрейма? Делать отдельной страницей не хочу по тому, что придётся снова делать запросы к БД, а это лишняя нагрузка на сервер.


Ответы (1 шт):

Автор решения: Погорелый Василий

Разобрался. Нужно использовать srcdoc вместо src. Не понял только можно ли передать в base64, пока просто заменил двойные кавычки на одинарные.

<iframe id="frame" srcdoc="<?echo preg_replace('/["]/', "'", $content);?>" frameborder="0" style="width: 100%;"></iframe>
→ Ссылка