检查文件是否有鼠标移动或触摸屏幕保护程序

时间:2013-02-25 09:02:43

标签: javascript jquery html

正如标题所说,我想知道javascript(jquery)中是否有任何可能性来检查文档中是否有任何操作,如果没有。应该弹出屏幕保护程序! 如果有人在页面上看到这里,看看那里,过了一会儿他什么都不做,鼠标(或触摸手指)静止不动,我想在一分钟后没有活动说文件......

function noactivity() { //after 60000ms start something here }

我想要整个文档的全局! 谢谢特德

2 个答案:

答案 0 :(得分:0)

可以使用以下命令在jquery中相对简单地完成:

setTimeout();

http://jsfiddle.net/bernie1227/hNkTy/1/

答案 1 :(得分:0)

在我处理iframe调整大小问题时,我有一段时间没有这个问题了。我想要的是在document的高度发生变化时告诉父页面。

我发现jQuery没有直接提供这样的功能。造成这种情况的主要原因是,当您观看DOM时,有太多活动发生在DOM上(bind)。但是,您可以观察特定属性,例如鼠标移动文档。

$(document).mousemove(function(e){
    console.log(e.pageY);
    console.log(e.pageX);
});

但话说再说这根本不意味着用户正在与您的网页进行互动。这仅表示用户在您的页面上并且他的鼠标正在移动。用户可能也没有移动鼠标,只是使用他的键盘与您的页面进行交互。所以现在你必须注意键盘交互。

$(document).keyup(function(e){
    console.log('active');
});

使用这些可以创建倒计时功能,在设定的时间间隔后检查标志。如果用户进行活动,您可以设置标志。在设定的时间之后,“noactivity()”函数id没有设置标志。

观察文档活动的另一种方法是观察正在修改的DOM子树。

jQuery(document).bind('DOMSubtreeModified', function() {
    console.log('active');
});

这适用于Chrome / FireFox / IE8 +,但不适用于Opera(任何版本)。主要原因是操作对浏览器的资源过重。而且我不鼓励使用这种方法,因为监听DOM突变事件可能会损害性能,相关的W3C工作组正试图找到一种更好的方法来实现这一点,并因为这个原因而弃用DOM突变事件 - 很难或不可能做出好的和高效的实施。

我并不是说我上面提到的其他选项也不错。如果您正在观看document并且应该避免,它们也是昂贵的操作。这些选项的另一个问题是,iframe内容并不是document的特别内容,如果用户与iframe内容进行互动,这些选项将无效。

所以结论是W3C还没有最终确定用户可以观察文档子树变化的廉价方式。