在模糊函数Jquery中检测Mousemovent [英] Detect Mousemovent inside of blur function Jquery

查看:80
本文介绍了在模糊函数Jquery中检测Mousemovent的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一种整洁的方法来停止AJAX,该方法基于浏览器是否聚焦以及鼠标是否移动来确定.因此,这就是我希望它执行的操作:

I am trying to create a neat way to stop an AJAX called based upon if the browser is in focus, and if the mouse moves.. So here's what I want it to do:

如果用户转到浏览器中的其他选项卡,最小化窗口或转到Web应用程序之外的其他位置,我希望它在1分钟内杀死AJAX呼叫.如果用户将鼠标移动到Web应用程序中的任何位置,则应考虑用户专注于"该应用程序,从而继续进行ajax调用.我在其中放置了一个名为"st"的超时,以处理超时"部分,但是添加鼠标检测器要先进一些.这就是我所拥有的:

If the user goes to a different tab in their browser, minimized the window, or goes somewhere else other than the web app, I want it to kill the AJAX calls in 1 minute. If the user moves the mouse anywhere in the web app, it should consider the user "focused" on the app, and thus continue the ajax calls. I put a timeout called "st" in there to take care of the "timeout" portion, but adding in a mouse detector is a little more advanced. Here's what I have:

var window_focus = true;
$(document).ready(function () {    

    $('#alertbox').click(function () {
        $('#alertbox').slideUp("slow");
    });

    // Check focal point
    $(window).focus(function () {
        if (window_focus) {
            return
        }
        window_focus = true;
        waitForMsg();

    }).blur(function () {
        if (!window_focus) {
            return
        }
        console.log('Init Suspension...');
        // Set Timeout
        $(function () {
            st = setTimeout(function () {
                clearTimeout(setTimeoutConst);
                window_focus = false;
                document.title = 'Timed Out | WEBSITE';
                console.log('Suspended');
            }, 60000);    
        });
    });

    waitForMsg();
});

我打算尝试添加如下内容:

I was going to try adding in something like this:

$(function () {
    $().mousemove(function () {
        console.log('Reinitialize');
        clearTimeout(st);
        waitForMsg();
    });
});

但是没有用.感谢您的帮助.

But it didn't work. Thanks for your help.

推荐答案

尝试一下 jsfiddle

var window_focus = true, lastMouseMoveTime;
$(document).ready(function () {    
    lastMouseMoveTime = new Date().getTime();
    $('#alertbox').click(function () {
        $('#alertbox').slideUp("slow");
    });

    // Check focal point
    $(window).focus(function () {
        if (window_focus) {
            return
        }
        window_focus = true;
        waitForMsg();

    }).blur(function () {
        if (!window_focus) {
            return
        }
        window_focus = false;
        console.log('Init Suspension...');
        // Set Timeout
    });

    waitForMsg();
    $(document).mousemove(function(){
        lastMouseMoveTime = new Date().getTime();
        if(!window_focus ){
            waitForMsg(); // restarting ajax if it stopped because of mousemove.
        }

    });

});

在您的ajax调用方法中

in your ajax call method

if( !window_focus){
     if( new Date().getTime() - lastMouseMoveTime   > 60*1000 ){
            return;
     }
}

这篇关于在模糊函数Jquery中检测Mousemovent的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆