2014-09-30 59 views
0

我有一个使用setTimeout的JavaScript函数。我的问题是,我有一个ASP.NET页面,该页面具有在函数完成之前在页面加载中执行的代码。有没有办法暂停页面加载或只有在定时器完成后才调用页面加载。 setTimeout文件位于独立的JS文件中,不属于asp.net页面。ASP.NET页面加载和javascript设置超时

setTimeout(function() { myFunc(); }, 1000); 

我知道在MVC中你不必处理这个问题。

+2

在客户端上呈现任何内容之前,执行“Page_Load”服务器端。您不能设置*客户端*等待状态来延迟*创建客户端等待状态的*服务器端*代码。 (而在MVC中,你肯定不得不处理客户端和服务器端代码的分离。) – David 2014-09-30 17:08:21

+2

除非我误解了页面生命周期......在代码背后的Page_Load将*总是*在setTimeout javascript函数之前完成准备好文档 – Kritner 2014-09-30 17:08:47

+0

您可以使用2个ASP.NET页面来完成setTimeout功能。首页使用setTimeout然后重定向到第二页。或者使用AJAX而不是第二页。 – yW0K5o 2014-09-30 17:10:17

回答

0

要暂停Page_Load中的Page_Load使用System.Threading.Thread.Sleep(1000);

除非你知道如何使用多线程,我不会真的这样做。我会禁用在此处找到的所有页面控件:How do I disable all controls in ASP.NET page?然后在您希望时重新启用。

这就是说Javascript不能运行在Page_load之前。你可以在Javascript中做的大部分事情都可以在asp.net中复制。但是你没有可见的代码,所以我不能假设。

0

我假设你指的是客户端asp.net ajax pageLoad()方法(而不是服务器端Page_Load方法)。 MS ajax在任何回发或部分页面回发后查找并调用此方法。

由于pageLoad()在任何回发或部分页面回发后触发,所以无法将其延迟。我相信你想要做的是在你的“myFunc()”方法中移动你的页面回发或部分页面回发调用,但是你需要发布你正在尝试做的更全面的例子。