如何使用jquery或jsp检测系统上的键和鼠标事件

时间:2014-12-08 04:51:59

标签: javascript jquery html html5 jsp

我知道这很困难,可能是不可能的问题,但即使有任何解决方案,请说出来。

当客户端正在处理其他应用程序时,我们如何在Web应用程序中检测键和鼠标事件,并且可能是运行我们的应用程序的浏览器最小化。

因为我的应用程序是一种计时器,我必须通过键和鼠标事件计算客户端在该计算机上的空闲时间。如果客户在我们的应用程序或其他应用程序上工作,则无关紧要。重要的是他必须在我的计时器运行期间在那台机器上工作。

3 个答案:

答案 0 :(得分:1)

我不知道如何在html / jquery中实现这一点,因为它需要浏览器处于焦点状态。 尝试使用node.js它可以做诸如桌面应用程序之类的东西。

答案 1 :(得分:1)

编辑:正如@HappyPatrick建议的那样,您可以在ATOM SHELL之类的内容中执行类似的操作。你不会创建一个窗口。

编辑II - 我理解:

1)包括间隔内容因为......

  

因为我的应用程序是一种计时器,我必须通过键和鼠标事件计算客户端在该计算机上的空闲时间。

请记住,如果您使用js编写桌面客户端,您仍然可以使用此代码。

2)包括Atom shell,因为...它使您能够在js中编写桌面应用程序

  

我们如何在Web应用程序中检测到键和鼠标事件   客户端正在处理其他应用程序,可能是其中的浏览器   我们的应用程序正在运行最小化。

如果跟踪浏览器外的用户行为,gui-less桌面应用可能是安全的选择


您可以随时使用浏览器插件 - 但仅限于浏览器内行为。将内容脚本注入到所关注的页面/选项卡中,将事件侦听器附加到将消息传递给后台脚本(例如,在chrome扩展中)以跟踪空闲状态的文档。每个浏览器的插件显然会有所不同,但jquery可能看起来像这样:

var idleDuration = 0;

$(document).ready(function () {

    resetIdleTimer(60000, 9);

    $(this).on('mousemove keypress click', function() {
        idleDuration = 0;
        // 
        // handle these events here (creepy keylogging, etc)
        //
    });

    function resetIdleTimer(duration, maxCount) {

        // Increment idle counter every 1min. react after 10
        var idleInterval = setInterval(function() {
            idleDuration++;
            if (idleDuration > maxCount) { // 10 minute threshold reached 
                //
                // respond to idle
                //
                window.location.reload();
            }
        }, duration); // check at inteval of your pref
    }
});

答案 2 :(得分:0)

要检测用户的活动,您可以在javascript中使用onmousemove事件

当鼠标指针位于浏览器页面中的特定div上时执行。

如果您希望它在完整的页面正文内容上记录用户活动,您可以以这种方式使用它  <body onmousemove = "recordactivity(event)">
否则
如果您希望它记录页面的端到端,您可以将其附加到您的html标签本身中 <html onmousemove = "recordactivity(event)">

您可以使用clientX和clientY获取页面的坐标 并跟踪用户鼠标指针的位置。