【问题标题】:Searching for something like submit complete event to turn loader off搜索提交完成事件之类的内容以关闭加载程序
【发布时间】:2012-07-04 13:10:36
【问题描述】:

我正在尝试在我的 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 事件来关闭加载器,但仍然存在一个问题,当我提交尝试下载文件时它不会在页面上进行回发,所以它不会'不要放下我的装载机。 那么,我该怎么做呢?我搜索了诸如提交完整事件之类的东西,但没有成功。我的想法是将提交完成事件放在父页面上,但我需要知道该事件。如果您想给我另一个想法,我将不胜感激。

【问题讨论】:

  • 打开新标签页/窗口时,您的当前页面将变为新标签页/窗口中的页面。与上一页的 loader 有什么关系?其次,您的主文档现在如何加载新页面?

标签: c# javascript jquery asp.net webforms


【解决方案1】:

打开新标签页/窗口时,您的当前页面将变为新标签页/窗口中的页面。与上一页的 loader 有什么关系?其次,您的主文档现在如何加载新页面?

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

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

click for jsfiddle example

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

});

【讨论】:

  • 我所有的页面都在一个页面内(它不是母版页)并且它们在框架内使用。当我的页面进行回发时,我的 body onload 事件中有加载函数,所以它是可靠的。如果我设置 setTimeout 它将不可靠,但如果我知道如何验证浏览器是否忙,我需要这个超时
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 2020-09-22
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
相关资源
最近更新 更多