2011-12-20 94 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