4

私の Web ページには、Javascript の を使用したカウントダウン タイマーがありsetTimeout()ます。

    function Tick() {
        if (RemainingSeconds <= 0) {
            alert("Time is up.");
            return;
        }
        RemainingSeconds -= 1;
        ElapsedSeconds += 1;
        UpdateTimerDisplay();
        window.setTimeout("Tick()", 1000);
    }

onbeforeunloadまた、ユーザーがページを離れるのを「防ぐ」ためにトリガーされる機能もあります。

    window.onbeforeunload = function () {
        if (!isIEAjaxRequest) {
            return "You should use the logout button to leave this page!";
        }
        else {
            isIEAjaxRequest = false;
        }
    };

問題は、「このページを離れてもよろしいですか?」ウィンドウがプロンプトを表示すると、setTimeout()機能が一時停止します。これを防ぐ方法について何か考えはありますか?

4

3 に答える 3

4

できません。Javascript は厳密にシングル スレッドであるため、モーダル ポップアップは他のすべてを中断します。

于 2012-10-04T16:44:18.903 に答える
2

可能な回避策はvar before = new Date()、ダイアログが表示されるまでの時間を保存し、それを使用して、ダイアログが消えてから経過した時間を計算して、失われた秒を補うことです。

于 2012-10-04T16:50:06.940 に答える
1

いいえ、UI スレッドが別のタスク (この場合、そのネイティブ モーダル ダイアログ プロンプトの表示) で消費されている間、バックグラウンドで UI を更新し続けることはできません。

Javascript タイムアウト - 仕様を参照してください

于 2012-10-04T16:44:15.203 に答える