2016-09-05 2 views
0

У меня есть Iframe, и содержимое этого iframe изменяется, поэтому окно может быть больше или меньше, поэтому я добавил сценарий автоматического изменения размера.Auto Resize не работает

Этот сценарий работает отлично, но только в том случае, если содержимое больше, если содержимое изменяется и оно меньше, чем в последний раз, окно не изменяет размер, а вершина одинакова.

Я не знаю, что не так. Если у вас есть идея, это будет хорошо.

Также есть мой сценарий и мой IFrame:

function autoResize(id){ 
    var newheight; 
    var newwidth; 

    if(document.getElementById){ 
     newheight=document.getElementById(id).contentWindow.document.body.scrollHeight; 
     newwidth=document.getElementById(id).contentWindow.document.body.scrollWidth; 
    } 

    document.getElementById(id).height=(newheight) + "px"; 
    document.getElementById(id).width=(newwidth) + "px"; 
} 

$(function(){ 
    var f=$('#foo') 
    f.load(function(){ 
     f.contents().find("body").on('click', function(event) { 
      runAfterTimeout('foo'); 
     }); 
    }) 
}) 
function runAfterTimeout(id) { 
    setTimeout(function(){ 
     autoResize(id); 
    },1000); 
}; 

Мой IFrame:

<iframe height="300px" width="100%" id="foo" src="" style="border: 0px currentColor; border-image: none;" onload="autoResize('foo')"></iframe> 
+0

Возможно, потому что высота не может быть меньше 300 пикселей по умолчанию, попробуйте удалить свойство height и замените его, добавив минимальную высоту для #foo в css. Если это не поможет - создайте фрагмент кода в plunkr или другом сервисе – booboos

ответ

1

Я думаю, что вам нужно сбросить высоту фрейма каждый раз OnLoad называется. попробуйте следующее:

function autoResize(id){ 
    document.getElementById(id).height="0px"; 
    var newheight=document.getElementById(id).contentWindow.document.body.scrollHeight; 
    var newwidth=document.getElementById(id).contentWindow.document.body.scrollWidth; 

    document.getElementById(id).height=(newheight) + "px"; 
    document.getElementById(id).width=(newwidth) + "px"; 
}