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> 

それは問題ではありません。試行するたびに正常に動作します。私の問題は、このローダーをすべてのリクエストにどのように使用できるかということです。私は2つの方法でそれを使用しようとしました:最初にすべてのリンクにローダー呼び出しを入れ、すべてのページ本体のオンロードイベントをロードするときに呼び出しを解除すると、正常に動作しますが、新しいタブ、新しいウィンドウを開くリンク、またはファイルをダウンロードするリンクをクリックすると私のローダーは終了しません。以下のコードを参照してください。

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

次に、ページにある 1 つのリソースを使用しました。システム上のすべてのページは分離コードで別のページと継承されているため、親ページの読み込みでこのコードを以下に配置します。

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

それは最後のものよりもうまく機能し、ローダーをオフにするためのページ本体のオンロードイベントをまだ使用していますが、ファイルをダウンロードしようとして送信するとページにポストバックが行われないため、まだ1つの問題があります。ローダーダウン。それで、それを行うにはどうすればよいですか?submit complete event のようなものを検索しましたが、成功しませんでした。私のアイデアは、サブミット完了イベントを親ページに配置することですが、イベントを知る必要があります。もし私に別のアイデアを与えたいなら、私は感謝します。

4

1 に答える 1

0

新しいタブ/ウィンドウを開いている間、現在のページは新しいタブ/ウィンドウのページになります。前のページのローダーと何をしなければならないのですか? 第二に、新しいページがロードされたかどうかにかかわらず、メインドキュメントがどのように機能するようになりましたか?

注:clickイベントはすぐにトリガーされ、期間は 0 であるため、コールバックはありません。

それでも、gif をしばらくロードし、しばらくしてから非表示にする必要がある場合は、setTimeout 関数を使用します。

jsfiddle の例をクリック

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

});
于 2012-07-05T05:19:51.240 に答える