2012-07-04 42 views
0

我想在我的asp.net webforms应用程序上使用加载器。 我的javascript装载机:寻找类似于提交完整事件来关闭加载器的东西

 function loading() { 
      $("#loading").show(); 
     } 

     function loaded() { 
      $("#loading").hide(); 
     } 

HTML装载机

<div id="loading"> 
     <span id="MessageLoader">Loading...</span> 
     <img id="imgLoading" src="../Skin/images/blue-ajax-loader.gif" /> 
    </div> 

这是没有问题的,它工作正常,每次我试过一次,我的问题是我如何使用这部分代码为每个请求? 我试图通过两种方式使用它: 首先将加载程序调用放入每个链接,并在加载每个页面主体onload事件时取消调用它,但它运行正常,但是当我点击打开新选项卡,新窗口或下载的链接时一些文件我的装载机写不完,看下面的代码:

 $('a').click(function() { 
       if ($(this).attr('href') != '#'){ 
       loading(); 
       } 
     } 

其次,我使用的一个资源,我的网页上有:我的系统上的每个页面都继承与另一个代码隐藏,所以在父页面加载我把这个代码如下:

 ScriptManager.RegisterOnSubmitStatement(this, this.GetType(), "myscript", "loading();"); 

它比上一个更好,它仍然与页面正文onload事件tu关闭加载程序,但仍有一个问题,当我提交尝试下载文件时,它不会在页面上进行回发,因此它不会将加载程序关闭。 那么,我该怎么做呢?我搜索了类似提交完整事件但没有成功的内容。我的理念是把提交完整的事件放在父页面上,但我需要知道事件。如果你想给我另一个想法,我将不胜感激。

+0

同时打开一个新标签/窗口中,当前的页面将成为那些在新标签/窗口。在前一页上你需要用loader来做什么?其次,您的主文档现在可以在新页面加载或不加载? –

回答

0

当打开一个新的标签页/窗口时,您当前的页面会变成新标签页/窗口中的页面。在前一页上你需要用loader来做什么?其次,您的主文档现在可以在新页面加载或不加载?

注意:click事件立即触发,持续时间为0,因此它没有任何回调。

但仍然如果你需要加载一段时间的gif,并在一段时间后隐藏setTimeout函数。

click for jsfiddle example

$('a').click(function() { 
       if ($(this).attr('href') != '#'){ 
        loading(); 
        setTimeout(loaded, 3000); //3 secs 
       } 

}); 
+0

我的所有页面都在一个页面内(它不是主页面),它们在框架内部使用。 当我的页面做回发时,我在我的body onload事件中加载了函数,所以它是可信的。如果我把setTimeout它将不可靠,但如果我知道如何验证浏览器是否忙碌,我需要这个超时 –