2012-08-04 15 views
11

メインウィンドウとiframeは同じドメインにありますが、達成したいのは、そのiframe内でのみjsを使用して内容に合わせてiframeのサイズを変更することです。メインウィンドウの助けを借りずにiframeのサイズを変更することは可能でしょうか?

メインウィンドウで割り当てられているiframeのIDもわかりません。私はjqueryや他のフレームワークを使用したくありません。

答えて

12

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

MDNframeElementを参照してください。

EDIT

iframeは、あなたがこのような何かを行うことができますサイズを固定し、overflow: hiddenたコンテナ要素であることを起こる念のために:

あなたが唯一の1つのIFRAMEを持っていると仮定すると
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

あなたのような同じ出身のコンテンツの場合は、yes you canです。上記の質問にゲイリーの回答から借りる

:iframe内

、window.parentは親 文書のグローバルオブジェクトではなく、ドキュメントオブジェクト自体を指します。私はparent.documentを使用してはiframeにアクセスしてみてください、これはあなたの問題を解決するかどうかを確認

をparent.document.getElementByIdあなたは 使用する必要があると考えています。あなたが親ウィンドウにiframeidを知らなくても、これを行うことができます

0

メインウィンドウはIFRAMEのドキュメントのJavascriptから次のようにすることができます:

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

var myself = getMySelf(); 
myself.style.width = whateverWidth; 
myself.style.height = whateverHeight; 
関連する問題