【问题标题】:disable everty javascript event out side of fancyfox popup在fancyfox弹出窗口之外禁用everty javascript事件
【发布时间】:2014-07-10 13:05:51
【问题描述】:

我正在为登录用户的会话时间打开一个花式框,在一段时间后,弹出窗口被禁用并且用户自动注销,但是如果我在弹出窗口之外单击,计数器时间设置为 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上单击确定按钮时。

【问题讨论】:

  • 如果fancybox打开并且访问者移动鼠标,你想将idleTime重置为0吗?所以没有注销? ...除非他们等待 1 分钟打开 fancybox?
  • BTW live() 已弃用,请改用 on()(需要 jQuery v1.7+)

标签: javascript jquery popup fancybox


【解决方案1】:

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

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,以便您知道您是否应该取消超时。

【讨论】:

猜你喜欢
  • 2011-08-05
  • 2012-12-21
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多