2012-02-18 9 views
0

私は最初のウェブサイトを構築していますが、iFrameのコンテンツの高さまで伸びる主な要素があります。 Index.htmのメインiFrame内にSubFolder/SubPage.htm(主に平文)を表示し、要素の高さを変更するIndex.htmの関数を呼び出すには、NavBox.htm(IndexページにiFrameされている)をクリックする必要がありますサブページの長さに依存する。エレメントの高さを変更するには、iFrameの内部から親関数を呼び出します。

長いページが呼び出されたときに動作しますが、短いページが呼び出された場合、実際には追加したパディングサイズ(20px)だけ拡大します(パディングを外すと同じサイズになります)。私はそれが構文では単純な間違いだとは確信していますが、高さを要素内の新しいページで再計算することはできません。 Index.htmで

私は要素の高さを変更し、以下の機能があります。NavBox.htmの子で

<iframe id="Center" width=98%; LANGUAGE=javascript ONLOAD="return frm_onload(Center)" marginwidth="0" marginheight="0" frameborder="0" ></iframe> 

:さらに下

function frm_onload(frmname) { 
    frmname.frameElement.height = frmname.document.body.scrollHeight+20; 
} 

は、実際のiFrame呼び出しです私は要素の内容を変更するリンクを持っています:

<a href="SubFolder/SubPage.htm" target="Center" onclick="document.getElementById('Center').src=SubFolder/SubPage">SubPage</a> 

もし私がまっすぐ思っているのであれば、私はその機能から理解していないことがあるか、NavBoxのリンクがもっと必要です。皆さんのお手伝いをさせていただきありがとうございます!

+0

この回答を確認することをお勧めしますhttp://stackoverflow.com/a/19332928/532116 – Gilbou

答えて

0

私はこの1つに非常に似た質問に答えましたhere。あなたはこの機能を使用することができます。

function addCSSToParent(url) { 
    var link = document.createElement('link'); 
    link.rel = 'stylesheet'; 
    link.href = url; 
    link.type = 'text/css'; 
    window.parent.document.getElementsByTagName('head')[0].appendChild(link); 
} 

// Add some CSS 
addCSSToParent('some.css'); 

それはあなたが親をスタイリングのための.cssファイルを添付できるようになります。親文書には、jQueryのiframe内から$(window.parent.document)でアクセスできます。したがって、親にCSSファイルを追加するか、jQueryを使用して要素の高さのスタイルを定義するだけです。

+0

私はすでにレイアウト用のCSSファイルを持っていますが、それは本当に基本的なもので、navboxを設定するだけです。以前はJSやjQueryを使ったことがなかったので、そのコードが何をしているのか分かりません。現在、iFrameウィンドウは、その関数を介してページが読み込まれたときに定義されますが、新しいページを読み込むリンクから要素のウィンドウサイズを変更する方法がわかりません。 – Farlo

+0

申し訳ありません私が漠然としているなら、私は何をしているのか完全にはわかりません。基本的には、上記の関数をリンクで呼び出すことで、要素の高さを新しいコンテンツに再スケーリングします。 – Farlo

+0

iframeを使用する理由は何ですか?そのファイルからAJAXを使ってデータをロードし、divなどに入れることができます。その後、元のスクリプトを使用して内容が読み込まれると、その内容が読み込まれます。 –

関連する問題