Изменение размера 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>