2012-10-07 182 views
1

好的。我想盡力解釋這一點,盡我所能。調整其中包含調整大小的iframe的iframe的大小

我正在一個網站上有一個帶有iframe的網頁。 iframe顯示另一個擁有自己的iframe的網頁。

iframe中的iframe更改大小,特別是高度。

我該如何獲得iframe中的iframe和顯示iframe的iframe ...(Oye,令人困惑)來一起改變高度?

基本上我所擁有的是在iframe中有iframe的網頁,iframe中的iframe是論壇頁面。這意味着,當人們發佈內部iframe改變高度,因此需要擴展它所包含的iframe。

男人只是問這個問題真的讓我困惑。

我已經取得了谷歌和各種網站,但我似乎無法得到一個代碼,做我想要的或爲此事工作。

感謝

+0

是:(1)網頁上的所有頁面,(2)母公司'IFRAME',以及(3)子' IFRAME'在相同的主機名中? – Jay

回答

0

我知道這是一個古老的線程,但想到我會分享我的經驗。我在工作中處理項目時遇到了幾乎相同的問題。我到處搜索並嘗試了很多不同的東西,但最終發現它工作得很好(在這裏有很多帖子的幫助!)。到目前爲止,我使用FF 30,IE11和Chrome進行了測試。總之,我有一個父母的HTML頁面,我可以把一個iframe。該iframe加載一個包含另一個iframe的aspx頁面。最內部的iframe(child_page_2.aspx)具有動態內容,我希望兩個iframe都能相應調整大小。另外,要明確這些都在同一個域/主機名上。

我使用最內iframe(child_page_2.aspx)上的數據列表進行分頁。每次點擊頁碼都會生成不同高度的動態內容,即通過分頁數據。我發現做一個OnClick()事件服務器端並使用ScriptManager來觸發客戶端JavaScript會在加載內容後返回正確的高度。我沒有將所有的DataList代碼都顯示在嵌套在ItemTemplate中的鏈接按鈕中。

我知道這是設置網頁的可怕方式,因爲我們只能訪問HTML父頁面,所以我們不得不這樣做。嵌套iframe的原因是爲我們提供了一個「菜單」頁面,其中包含下面的iframe中的內容(child_page_1.aspx - > child_page_2.aspx)。

希望這可以幫助別人!

家長page.html中:

<iframe src=child_page_1.aspx id="mainFrame" /> 

child_page_1.aspx:

<head> 
<script type="text/javascript"> 

    function adjustMyFrameHeight() { 
      var frame = getElement("mainFrame");  
      frame.height = document.body.offsetHeight + 60 + "px"; 
    } 
    function getElement(aID) { 
     return (document.getElementById) ? 
     parent.document.getElementById(aID) : parent.document.all[aID]; 
    } 

    function updateframeheight(newheight) { 
     var frame = document.getElementById("subFrame"); 
     frame.height = newheight + "px"; 
     adjustMyFrameHeight(); 

    } 
</head> 

<body onload="adjustMyFrameHeight();"> 

<iframe id="subFrame" src="child_page_2.aspx" > 

</body> 

child_page_2。ASPX:

<head> 
<script type="text/javascript"> 

    function adjustMyFrameHeight() { 
      var frame = getElement("subFrame"); 
      frame.height = document.body.offsetHeight + 60 + "px"; 


    } 
    function getElement(aID) { 
     return (document.getElementById) ? 
     parent.document.getElementById(aID) : parent.document.all[aID]; 

    } 
    function updatesize() { 
     parent.updateframeheight(document.body.offsetHeight + 60); 

    } 
</script> 
</head> 

<body onload="adjustMyFrameHeight();"> 
<form> 
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server" > 
<ContentTemplate> 

<asp:LinkButton ID="lnkbtnPrevious" runat="server" OnClick="lnkbtnPrevious_Click">Previous</asp:LinkButton> 

</ContentTemplate> 
</asp:UpdatePanel> 

</form> 

child_page_2.aspx.cs:

protected void lnkbtnPrevious_Click(object sender, EventArgs e) 
    { 

     ScriptManager.RegisterStartupScript(Page, typeof(Page), "updatesize", "updatesize();", true); 
    }