2011-12-20 92 views
0

我們試圖在fancybox中顯示一條消息,在成功回發頁面後的頁面加載事件中。jQuery document.ready奇怪的行爲

Page.ClientScript.RegisterStartupScript(GetType(), "Script", "ShowPopup('popup');", true); 

這裏的javsacript功能ShowPopup:

function showPopup(p) { 
    ShowFancyBoxDiv("#divMessage", 50, 300); 
} 

但是,當我們我們使用的ASP.NET.Here的在cs文件的代碼Page.RegisterClientScript方法註冊腳本到頁面做到這一點,只有窗口視圖中的第一頁呈灰色顯示,當向下滾動時,頁面的其餘部分仍處於活動狀態,並且未經處理。

但是,當我們添加一個計時器,如下所示,一切工作正常。

$(document).ready(function() { 
    setTimeout(function() { 
     ShowFancyBoxDiv("#divMessage", 50, 300); 
     $("#fancybox-close").css("display", "none"); 
    }, 1000); 
}); 

所以,任何人都可以解釋這裏發生了什麼。 document.ready應該自動檢查要完全加載的文檔,那麼爲什麼我們需要使用該定時器功能?謝謝。

回答

0

我懷疑你可能仍然有加載元素,如圖像。就緒表示DOM已準備就緒。這並不意味着所有內容都按照您的說法進行加載。如果你想要,那麼使用.load

$(window).load(function() { 
    //code 
}); 

本網站有關於此準備好的文章。

http://web.enavu.com/daily-tip/daily-tip-difference-between-document-ready-and-window-load-in-jquery/

+0

DID NOT WORK。 (document).load(function(){ShowFancyBoxDiv(「#divMessage」,50,300);}); 但使用此時,不知道爲什麼,但ShowFancyBoxDiv()甚至沒有被解僱? 另外,即使我使用了1秒的超時時間,頁面的各種元素仍然在加載(當通過螢火蟲的'net'標籤進行檢查時),但fancybox仍然正常顯示。所以,我相信,問題一定是別的。 – MrClan 2011-12-20 11:44:48

+0

@PratikChandra - 對不起,我的代碼有一個錯誤。現在嘗試使用$(window).load代替。謝謝你,感謝你的工作, – mrtsherman 2011-12-20 13:46:05

+0

。 – MrClan 2011-12-21 10:24:27