Функция изменения размера Javascript для iframes не работает в Google Chrome - PullRequest
3 голосов
/ 24 декабря 2011

Я использовал функцию изменения размера javascript, которую нашел в stackoverflow, и она прекрасно работает с IE и FF. Однако в Google Chrome он может изменять размер только тех фреймов, которые больше предыдущего. Если ему нужно изменить размер меньшего фрейма, он берет ту же высоту и добавляет 30px.

Я предполагаю, что это как-то связано с получением scrollHeight, но я не знаю, как это исправить.

Я уже пытался использовать тайм-аут, потому что я где-то читал, что может помочь, но это не так.

Вот соответствующий код:

    function autoResize(id){
        var newheight;
        if(document.getElementById)
        {
            newheight=document.getElementById(id).contentWindow.document.body.scrollHeight;
            newheight=newheight+30;
        }
        document.getElementById(id).height = (newheight) + "px";
    }

    <iframe src="<?php echo "$LC"; ?>/home.html" name="iframe" id="iframe" width="435px" height="10px" scrolling="no" frameborder="0" style="margin-left:-10px;padding-bottom:20px;" onLoad="setTimeout(autoResize('iframe'),250);";">

Редактировать: решил, изменив функцию на

    function autoResize(id) {
        document.getElementById(id).height = document.getElementById(id).contentDocument.documentElement.scrollHeight+15; //Chrome

        document.getElementById(id).height = document.getElementById(id).contentWindow.document.body.scrollHeight+15; //FF, IE
    }

1 Ответ

7 голосов
/ 31 октября 2012
function autoResize(id) {
    document.getElementById(id).height = document.getElementById(id).contentDocument.documentElement.scrollHeight+15; //Chrome

    document.getElementById(id).height = document.getElementById(id).contentWindow.document.body.scrollHeight+15; //FF, IE
}
...