таймер простоя не работает - PullRequest
1 голос
/ 12 декабря 2011

У меня есть два таймера простоя jQuery, один ниже, а другой - схожий код со значениями тайм-аута выше, чем первый.Я прокомментировал значения времени ожидания для второго.Два сценария выполняются на одной странице HTML.Когда появляется первый модальный (тот, у которого меньше время ожидания), я не могу закрыть его, а также он не переходит на страницу перенаправления после значения «myTimeout».

(function($){
            var timer;
            //var timeout = 600000;
            //var myTimeOut = 120000;
            var timeout = 120000;
            var myTimeOut = 60000;
                $(document).bind("idle.idleTimer", function(){
                  $( "#popup-modal" ).dialog({ 
                    modal: true,
                    autoOpen: true,
                    width: 574,
                    resizable : false,
                    draggable:false,
                    open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); $(".ui-dialog-print").hide(); $(".ui-icon").hide(); },
                    show: {effect: 'fade'} 
                    });
                timer = window.setTimeout(function()
                {  window.location.href = "redirectpage.xhtml";},myTimeOut);
                });
            $(document).bind("active.idleTimer", function(){
                timeout = 120000;
               window.clearTimeout(timer);
            });
            $.idleTimer(timeout);
        })(jQuery);

1 Ответ

1 голос
/ 06 января 2012

Вы пытались добавить обработчик для события закрытия диалога?

(function ($) {
    'use strict';
    var timer;
    var timeout = 120000;
    var myTimeOut = 60000;
    //var timeout = 600000;
    //var myTimeOut = 120000;
    function resetRedirectTimer() {
        timeout = 120000;
        window.clearTimeout(timer);
    };
    $(document).bind('idle.idleTimer', function () {
        $("#popup-modal").dialog({
            'modal': true,
            'autoOpen': true,
            'width': 574,
            'resizable': false,
            'draggable': false,
            'close': function (event, ui) {
                resetRedirectTimer();
            },
            'open': function (event, ui) {
                $('.ui-dialog-titlebar-close').hide();
                $('.ui-dialog-print').hide();
                $('.ui-icon').hide();
            },
            'show': {
                'effect': 'fade'
            }
        });
        timer = window.setTimeout(function () {
            window.location.href = 'redirectpage.xhtml';
        }, myTimeOut);
    });
    $(document).bind('active.idleTimer', function () {
        resetRedirectTimer();
    });
    $.idleTimer(timeout);
}(jQuery));

Кроме того, вы, похоже, скрываете элементы управления по умолчанию для закрытия диалога при его открытии. У вас все еще есть кнопка (или другой элемент управления), с помощью которой можно закрыть диалоговое окно?

Наконец, чтобы прояснить проблему, похоже, что вы хотите перенаправить пользователя после 60 секунд бездействия, но отменить перенаправление, если они снова становятся активными.

Это то, что вы пытаетесь достичь?

Надеюсь, это поможет.

1012 * Пит *

...