0

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

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

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

4

2 回答 2

0

它可以在 jquery 中相对简单地使用:

setTimeout();

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

于 2013-02-25T09:23:39.643 回答
0

我在处理 iframe 大小调整问题时遇到了这个问题。我想要的是在document.

我发现 jQuery 并没有直接提供这样的功能。主要原因是 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 还没有最终确定一种用户可以观察文档子树变化的廉价方式。

于 2013-02-25T09:32:45.787 回答