0

.aspx.csコード内に関数があり、クールな読み込みアニメーションを表示するまで、処理に長い時間がかかります。
以前の投稿のいくつかを調べましたが、これらが機能しなかったか、ページの読み込みシナリオに固有のソリューションがありました(関数が完了するまでしばらく読み込まれませんでした)。

正しいアプローチは、メイン関数が開始する直前にJavascript startLoader()関数を起動し(これには長い時間がかかります)、次に.aspx.cs自体からstopLoader()を呼び出して、ローダーを停止することです。機能が終了します。これを実装する方法について何か提案はありますか?

4

4 に答える 4

0

その間、ブラウザが応答しないことを気にしない場合、これを行う最も簡単な方法は、アニメーションGIFを使用することです。

秘訣は、処理を開始するときに画像を表示し、終了すると非表示にすることです。imgで表示し、jQueryまたは表示/非表示にしたいものを使用できます。

応答性を維持するためにブラウザーが必要な場合は、Webワーカーを使用してください。ただし、一部の古いブラウザはこれをサポートしていないことに注意してください。このリファレンスを参照してください

于 2012-05-10T17:06:51.047 に答える
0

はい、ASP.NET Web From (ASP.NET MVC ソリューションではありません) でこれを行いました。OnSubmit クライアント側イベント ハンドラを提供する必要があります。基本的には、Javascript、HTML Div、1 行のコードビハインドの 3 つの部分に分けられます。

JavaScript:

    function ShowLoading(e) {
        // var divBg = document.createElement('div');
        var divBg = document.getElementById('blockScreen');
        var divLoad = document.createElement('div');
        var img = document.createElement('img');

        img.src = 'images/ajax-loader.gif';
        divLoad.setAttribute("class", "blockScreenLoader");
        divLoad.appendChild(img);

        divBg.appendChild(divLoad);

        document.getElementById('blockScreen').style.display = 'block';

        // These 2 lines cancel form submission, so only use if needed.
        //window.event.cancelBubble= true;
        //e.stopPropagation();
    }

    function HideLoading() {
        //alert('hideloading');
        document.getElementById("form1").onsubmit = null;
        document.getElementById('blockScreen').style.display = 'none';
        //alert('done');
    }

次のDIVを追加

 <div id="blockScreen" class="blockScreen" style="display:none">&nbsp;</div>

最後に、分離コードの Page_Load に以下を追加します。

 Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), "submit", "ShowLoading()");

これで、ページのポストバックはすべて、基本的に onsubmit イベントを呼び出す必要があります。ページのポストバックが完了する前にアニメーションが表示されます。

于 2012-05-10T17:40:51.673 に答える
0

はい、ボタンの OnCliencClick で startLoader() を起動するか、サーバー側のイベントを起動するために使用している要素を起動し、プロセスの最後にサーバー側から stopLoader() を呼び出します。このようなもの:

//rest of the server-side code above ...
Page.ClientScript.RegisterStartupScript(this.GetType(), "someKey", "stopLoader();", true);
于 2012-05-10T16:40:11.467 に答える
0

あなたが本当にやりたいのなら、唯一の方法はウェブワーカーです。あなたはおそらくそれらについて聞いたことがあるでしょう。

于 2012-05-10T16:39:17.317 に答える