禁用fancybox弹出窗口之外的每个javascript事件

时间:2014-07-10 13:05:52

标签: javascript jquery popup fancybox

我在一段等待时间之后打开一个登录用户的会话时间,弹出窗口禁用并且用户自动注销,但是如果我在弹出窗口外单击,则计数器时间设置为0所以它不是退出。

window.idleTime = 0;
jQuery(document).ready(function() {

    //Increment the idle time counter every minute.
    var idleInterval = setInterval(timerIncrement, 60000); 
    //Zero the idle timer on mouse movement.
    jQuery(this).mousemove(function (e) { 
        idleTime = 0;
        //alert(idleTime);
    });
    jQuery(this).keypress(function (e) {
        idleTime = 0;
        //alert(idleTime);
    });

    jQuery(".classname").live("click", function(){
        //alert('');
        idleTime = 0;
    })  

});
function timerIncrement() {
    var timedouturl = "logout.php?sTimeOut=1";
    //alert('Calling..');
    idleTime = idleTime + 1;
    if (idleTime > 2) { // 1 minutes
        //alert('Time Out =>'+idleTime);
        //window.location.reload();
        jQuery.fancybox({
        'type'      : 'ajax',
        'href'      : 'popup.php',
        'autoSize'  : false,
        'width'     : 450,
        'height'    : 'auto',
        afterLoad   : function(){
            //alert("IdleTime :"+idleTime);
           setTimeout( function() {
                                    jQuery.fancybox.close();
                                    //alert("LastIdleTime :"+ window.idleTime);
                                    if (window.idleTime > 2){
                                        window.location.href = timedouturl;
                                    }
                                    },60000); 

          }
        });
    }
}

我希望在弹出窗口外打开弹出窗口时阻止每个js事件。任何想法?

这里

jQuery(".classname").live("click", function(){
        //alert('');
        idleTime = 0;
    })  

用于点击fancybox上的ok按钮。

1 个答案:

答案 0 :(得分:0)

您可以使用一个布尔值来跟踪弹出窗口何时打开,然后仅在弹出窗口未打开时重置超时:

window.idleTime = 0;
var timeoutPopupOpen = false;
jQuery(document).ready(function() {

    //Increment the idle time counter every minute.
    var idleInterval = setInterval(timerIncrement, 60000); 
    //Zero the idle timer on mouse movement.
    jQuery(this).mousemove(function (e) {
        if (!timeoutPopupOpen) {
            idleTime = 0;
        }
        //alert(idleTime);
    });
    jQuery(this).keypress(function (e) {
        if (!timeoutPopupOpen) {
            idleTime = 0;
        }
        //alert(idleTime);
    });

    jQuery(".classname").live("click", function(){
        if (!timeoutPopupOpen) {
            idleTime = 0;
        }
        //alert('');
    })  

});
function timerIncrement() {
    var timedouturl = "logout.php?sTimeOut=1";
    //alert('Calling..');
    idleTime = idleTime + 1;
    if (idleTime > 2) { // 1 minutes
        //alert('Time Out =>'+idleTime);
        //window.location.reload();
        timeoutPopupOpen = true
        jQuery.fancybox({
            'type'      : 'ajax',
            'href'      : 'popup.php',
            'autoSize'  : false,
            'width'     : 450,
            'height'    : 'auto',
            afterClose  : function(){
                timeoutPopupOpen = false;
            },
            afterLoad   : function(){
                //alert("IdleTime :"+idleTime);
               setTimeout( function() {
                                    jQuery.fancybox.close();
                                    //alert("LastIdleTime :"+ window.idleTime);
                                    if (window.idleTime > 2){
                                        window.location.href = timedouturl;
                                    }
                                    },60000); 

            }
        });
    }
}

我不确定您使用的是哪个Fancybox,因为我似乎无法在fb2docsthese docs from fancybox.net中找到afterLoad选项,但只是保留跟踪某人何时启动和关闭fancybox以便您知道是否应该取消超时。