0

私が抱えている問題を解決するために、SO に関する多くの例 ( this onethis oneを含む) を試しました。

以下のスクリプトを使用して、ユーザーがボタンをクリックした後にシステムがビジー処理中であることをユーザーに示すために、「回転する」画像を含むオーバーレイをページに追加しています。

ACME.global = ACME.global ? ACME.global : {
    init: function() {
        $(".ctaButton").bind("click", this.pageLoadingOverlay);
    },
    pageLoadingOverlay : function(event) {
        var body = document.getElementsByTagName("body");
        var pageOverlay = document.createElement("div");
        pageOverlay.id = "onClickPageOverlay";
        body[0].appendChild(pageOverlay);
        setTimeout(function() {
            $('#onClickPageOverlay').remove();
        }, 1000);
    }
}

タイムアウト機能を省略した場合

        setTimeout(function() {
            $('#onClickPageOverlay').remove();
        }, 30000);

クリック イベントがボタンに適切にバインドされ、オーバーレイが読み込まれます。問題は、UI がオーバーレイ表示でスタックする可能性があることです (ページをレンダリングするシステムには「更新」または「戻る」ボタンがないため、ユーザーはページをリロードできません)。

ただし、完全なスクリプトを追加すると、onClick イベントがスクリプトにバインドされなくなったように見えます。

と のさまざまな組み合わせを試しましたが、うまくsetTimeoutいきdelayませんでした。

どんな助けでも大歓迎です。

4

2 に答える 2

0

タイムアウト機能がうまく構築されていません。

これを試して:

var t=setTimeout("$('#onClickPageOverlay').remove()",30000);

ドキュメンテーション:

setTimeout("javascript function",milliseconds);

setTimeout() メソッドは、指定されたミリ秒数待機してから、指定された関数を実行します。

setTimeout() の最初のパラメーターは関数でなければなりません。

2 番目のパラメーターは、今から何ミリ秒後に最初のパラメーターを実行するかを示します。

于 2012-07-20T06:34:37.083 に答える
0

コメントで既に述べたように、コードは問題なく動作します。

于 2012-07-21T09:02:58.753 に答える