2012-08-04 13 views
11

Zarówno główne okno, jak i element iframe znajdują się w tej samej domenie, ale chcę zmienić rozmiar ramki iframe, aby dopasować jej zawartość, używając js tylko w obrębie tego elementu iframe.jest to możliwe, że iframe zmienia rozmiar bez pomocy z głównego okna?

Również nie znam identyfikatora elementu iframe przypisanego do niego przez główne okno. I nie chcę używać jquery ani żadnych innych frameworków do tego.

Odpowiedz

12

Można to zrobić również bez znajomości id z iframe w oknie nadrzędnym:

window.frameElement.style.width = iframeContentWidth + 'px'; 
window.frameElement.style.height = iframeContentHeight + 'px'; 

Zobacz frameElement na MDN.

EDIT

Tylko w przypadku iframe dzieje się w elemencie pojemnika, który stałej wielkości i overflow: hidden można zrobić coś takiego:

function resizeIframe (iframeContentWidth, iframeContentHeight) { 
    var container = window.frameElement.parentElement; 
    if (container != parent.document.body) { 
     container.style.width = iframeContentWidth + 'px'; 
     container.style.height = iframeContentHeight + 'px'; 
    } 
    window.frameElement.style.width = iframeContentWidth + 'px'; 
    window.frameElement.style.height = iframeContentHeight + 'px'; 
    return; 
} 
0

W przypadku treści o tym samym pochodzeniu, takich jak Twoje, yes you can.

pożyczyć od Gary'ego odpowiedź na powyższe pytanie:

w iframe, window.parent odnosi się do globalnego obiektu dokumentu rodzic , a nie sam obiekt dokumentu. Wierzę, że trzeba by użytku parent.document.getElementById

Spróbuj uzyskać dostęp do iframe przy użyciu parent.document, i zobaczyć, czy to rozwiąże problem.

0

Zakładając, że mamy tylko 1 IFRAME w główne okno, z JavaScriptu dokumentu IFRAME możesz zrobić coś takiego:

function getMySelf() 
{ 
    return (window.parent.document.getElementsByTagName("iframe"))[0]; 
} 

var myself = getMySelf(); 
myself.style.width = whateverWidth; 
myself.style.height = whateverHeight; 
Powiązane problemy