我們有一個函數,可以在window.onload事件中更改iframe的高度,以便我們可以將其調整爲頁面內容。問題是,點擊一個asp:菜單後,其高度恢復爲默認值,並且window.onload事件不會觸發......所以我們需要在後續加載時觸發的事件(試過window.unload但沒有觸發)JavaScript事件像window.onload隨後加載
大小功能不能被稱爲關於ASP:點擊菜單,因爲窗口不會必須完成加載,因此高度計算會失敗......
任何想法?
我們有一個函數,可以在window.onload事件中更改iframe的高度,以便我們可以將其調整爲頁面內容。問題是,點擊一個asp:菜單後,其高度恢復爲默認值,並且window.onload事件不會觸發......所以我們需要在後續加載時觸發的事件(試過window.unload但沒有觸發)JavaScript事件像window.onload隨後加載
大小功能不能被稱爲關於ASP:點擊菜單,因爲窗口不會必須完成加載,因此高度計算會失敗......
任何想法?
ASP.Net AJAX公開了客戶端事件模型。要內容被刷新後執行代碼,使用綁定到pageLoaded
事件:
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoadedFunction);
詳細瞭解所有的ASP.Net AJAX JavaScript事件在這裏:http://msdn.microsoft.com/en-us/library/bb386417.aspx
ASPNet使用通過AJAX的後臺調用,然後更新接口。 你應該使用服務器端代碼。檢查您使用的AJAX解析器並查找其聲明的事件。我確信在更新網頁後會觸發一個事件,並且您可以附加一個eventListener。
在我們使用我們保存在在window.onload
document.getElementById("iframex").value = document.getElementById("iframeheight").height;
計算出的高度...然後在Menu1_MenuItemClick一個hiddenfield結束(對象發件人,MenuEventArgs e)我們重新分配的高度的IFRAME :iframex.Attributes["height"] = iframeheight.Value;
這對我們很有用(因爲在我們的例子中,幸運的是頁面高度並沒有改變每個選項的選擇),但沒有解決有關在後續加載後觸發window.onload事件或類似的問題以重新計算新的高度...
我們將等待有人可以給出這個問題的最佳答案...
我在2年前有過類似腳本的同樣的問題。我在新加載的頁面的window.onload中使用JavaScript解決了它,調用父文檔並執行腳本。在子頁面,我們有這個腳本:
function goSetHeight(){
if (parent == window) return;
else parent.setIframeHeight('iframe_name');
}
// Edit: Forgot to add the window.onload call
window.onload = goSetHeight;
這個腳本調用的地方,我們有一個腳本文件中包含的是有這個功能父頁面:
function setIframeHeight(iframename) {
var iframeEl = document.all[iframename];
var iframeWin = window.frames[iframename];
if(iframeEl && iframeWin) {
//var docHt = getDocHeight(iframeWin.document);
//if(docHt) iframeEl.style.height = docHt + 30 + "px";
iframeEl.style.height = iframeWin.document.body.offsetHeight + 30 + "px";
}
}
請注意,上面的函數是隻是用IE編寫的(這是一個應用程序規範),所以要使用跨瀏覽器就需要修改。我們遇到的唯一真正的問題是2個特定情況:
我們也考慮過這個選項,但正如你所說的,你必須把腳本放在每個子頁面(更多冗餘的變化:S)和extern的問題al pages ...至少它是一個有效的選項,所以我們的投票^^ – VSP 2011-02-09 14:35:08
@ ase69s - 這可以在很多方面添加。我們選擇將它作爲包含添加到現有包含的某個包含中,以便將此腳本事後添加到所有頁面中。如果你能找到一種方法來消除這種冗餘,那麼它可能也會起作用。如果你的解決方案能夠充分發揮作用,我會說去解決它。我知道我們的想法遇到了問題,因爲我們有3個頁面加載速度慢,所以menu_click在頁面加載完成之前完成了大小調整。 – 2011-02-09 14:38:51
我們可以使用updatepanel_load()在服務器端代碼,但在我們的解決方案中,您需要將它與隱藏字段結合起來,以便先前保存計算出的高度......但是,事件在負載開始時上升,而不是在完成時不能用於大小寫你想重新計算高度... – VSP 2011-02-09 14:40:52