jQuery document.ready异常行为

jQuery document.ready异常行为,jquery,asp.net,fancybox,Jquery,Asp.net,Fancybox,我们试图在页面成功回发后的页面加载事件中显示fancybox中的消息。我们正在使用ASP.NET的page.RegisterClientScript方法将脚本注册到页面中。以下是.cs文件中的代码: Page.ClientScript.RegisterStartupScript(GetType(), "Script", "ShowPopup('popup');", true); 下面是JavaScript函数ShowPopup: function showPopup(p) { Sh

我们试图在页面成功回发后的页面加载事件中显示fancybox中的消息。我们正在使用ASP.NET的page.RegisterClientScript方法将脚本注册到页面中。以下是.cs文件中的代码:

Page.ClientScript.RegisterStartupScript(GetType(), "Script", "ShowPopup('popup');", true);  
下面是JavaScript函数ShowPopup:

function showPopup(p) {
    ShowFancyBoxDiv("#divMessage", 50, 300);
}
但是当我们这样做的时候,只有窗口视图中的第一个页面是灰色的,当向下滚动时,页面的其余部分仍然处于活动状态并且没有被覆盖

但是,当我们添加一个计时器时,如下图所示,一切正常

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

那么,谁能解释一下这里发生了什么。document.ready应该自动检查文档是否已完全加载,那么为什么我们需要使用计时器功能???谢谢。

我怀疑您可能仍在加载元素,如图像。Ready意味着DOM已经准备好了。这并不意味着所有内容都已按您的状态加载。如果需要,请使用
.load

$(window).load( function() {
   //code
} );
这个网站有一篇关于vs ready的好文章


不起作用。您的意思是:$(document.load(function(){ShowFancyBoxDiv(“#divMessage”,50300);});但是当使用这个时,不知道为什么ShowFancyBoxDiv()甚至没有被激发???另外,即使我使用了1秒的超时时间,页面的各种元素仍在加载(当通过firebug的“net”选项卡进行检查时),但fancybox仍然正确显示。所以,我相信,问题一定是别的。@PratikChandra-对不起,我的代码有错误。现在使用$(window).load进行尝试。但是,我仍然无法得到的是,在计时器为1秒的情况下,图像和其他文件仍在加载,但尽管如此,fancy box仍在正确加载。因此,如果window.load在启动之前等待图像加载,那么1秒的计时器应该无法解决问题,对吗???我认为下载/显示图像和检索图像尺寸之间存在差异。我怀疑图像尺寸几乎可以立即检索,这意味着浏览器引擎可以在获取完整文件之前正确地计算元素位置。不知道为什么,但是……我不想相信你的这个特殊论点。:)