我知道這是一個古老的線程,但想到我會分享我的經驗。我在工作中處理項目時遇到了幾乎相同的問題。我到處搜索並嘗試了很多不同的東西,但最終發現它工作得很好(在這裏有很多帖子的幫助!)。到目前爲止,我使用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);
}
是:(1)網頁上的所有頁面,(2)母公司'IFRAME',以及(3)子' IFRAME'在相同的主機名中? – Jay