2012-01-12 7 views
2

У меня возникла проблема с изменением размера iframe после его инъекции при загрузке с использованием javascript. Я использую ширину набора около 300 пикселей, которая отлично работает, но динамически меняет высоту iframe до размера ее содержимого (сообщение в блоге).Измените размер iframe после добавления при загрузке

Я попытался получить contentWindow (не имел дочерних элементов dom) и contentDocument (который был undefined) безрезультатно.

Я делаю это на нагрузке:

var iframe = document.createElement('iframe'); 
iframe.setAttribute('id','postFrame'); 
iframe.setAttribute('frameborder','no'); 
iframe.setAttribute('scrolling','no'); 
iframe.setAttribute('onload','resizeFrame();'); 
iframe.setAttribute('width','300px'); 
iframe.setAttribute('src','http://espn.go.com/espn/print?id=7454651'); 
var container = document.getElementById('container'); 
container.appendChild(iframe); 


function resizeFrame(){ /* resize iframe based on content height*/ } 

Есть ли способ восстановить размер высота IFrame в зависимости от содержания в пределах фрейма?

* EDIT **

Возможные обходной путь:

Есть ли надежда, что я мог бы использовать Access-Control-Allow-Origin, чтобы помочь этой проблемы? Допустим, что страница, которая идет в iframe, является моей или echo'd из php-скрипта

+0

Я предполагаю, что вы не являетесь владельцем 'espn.go.com', и в этом случае я проделал большую работу в этой области на работе в течение нескольких месяцев - он полагается на сотрудничество между «клиентом» и «поставщик» (вы были бы одним из них, espn.go.com было бы другим). Я думаю, что лучше всего, если вы свяжетесь со мной конфиденциально, чтобы я мог поговорить с вами через Skype. Если вы оставите свое имя пользователя Skype здесь, я добавлю вас и попытаюсь помочь. – ClarkeyBoy

+0

hmm i dont use skype – mbuff24

ответ

1

Я использую следующую функцию, чтобы изменить размер iframe на высоту содержимого. Это для приложения интрасети (и только надлежащим образом проверены в IE8), но, конечно, работает, так что может обеспечить недостающее clue-

function sizeIframeToContent(id) { 
    // resize iframe to be the height of the content 
    try { 
     var frame = document.getElementById(id); 
     innerDoc = (frame.contentDocument) ? 
        frame.contentDocument : frame.contentWindow.document; 
     var objToResize = (frame.style) ? frame.style : frame; 
     objToResize.height = innerDoc.body.scrollHeight + 10 + 'px'; 
     //objToResize.width = innerDoc.body.scrollWidth + 10 + 'px'; 
    } 
    catch (err) { 
     console.log(err.message); 
    } 
} 

Редактировать explanation- после того, как документ загружен, вы должны быть в состоянии найти документ высота, которую затем можно использовать в качестве высоты для iframe. Я прокомментировал часть ширины вышеприведенной функции, поскольку вы конкретно спрашиваете о ее высоте.

+0

Я получаю это в консоли: не могу прочитать свойство 'body' undefined – mbuff24

+0

@ buffstar24 получить это в Chrome, а ... посмотрю, что я могу сделать – davidsleeps

+0

И в firefox я получаю Разрешение отклонено за get property HTMLDocument.body – mbuff24

Смежные вопросы