Html 每当用户与SPA交互时重置倒计时计时器

Html 每当用户与SPA交互时重置倒计时计时器,html,css,events,ember.js,Html,Css,Events,Ember.js,我有一个余烬单页应用程序。该应用程序具有自动注销功能:每当计时器过期时,它将自动注销。每次用户与页面交互时,我都要重置计时器: 每当输入键盘输入时 无论何时单击页面的任何组件,包括例如下拉打开,都不会触发任何余烬操作 在鼠标/键盘事件发送到ember之前,是否可以添加任何代码来捕获它?重置计时器后,事件应传递给ember或CSS管道进行进一步处理 我想考虑一个特殊的情况:每当用户在非活动区域(例如背景)点击时,我不确定是否重置计时器更好,所以我希望能够捕捉到这一点,以便决定以后做什么。我不知

我有一个余烬单页应用程序。该应用程序具有自动注销功能:每当计时器过期时,它将自动注销。每次用户与页面交互时,我都要重置计时器:

  • 每当输入键盘输入时
  • 无论何时单击页面的任何组件,包括例如下拉打开,都不会触发任何余烬操作
在鼠标/键盘事件发送到ember之前,是否可以添加任何代码来捕获它?重置计时器后,事件应传递给ember或CSS管道进行进一步处理


我想考虑一个特殊的情况:每当用户在非活动区域(例如背景)点击时,我不确定是否重置计时器更好,所以我希望能够捕捉到这一点,以便决定以后做什么。我不知道如何定义非活动区域:从用户的角度来看,单击任何没有CSS效果或任何其他类型的效果被触发的地方。

这是我们正在使用的,我肯定是从其他人那里偷来的,并将其应用到Ember中,但我不想知道在哪里。它实际上只是告诉您他们是否以任何方式与页面交互,而不一定是单击了任何组件等

App.idleTime = 0;
$(document).ready(function () {
  //Increment the idle time counter every minute.
  var idleInterval = setInterval(function() {
    App.idleTime = App.idleTime + 1;
  }, 60000); // 1 minute

  //Zero the idle timer on mouse movement.
  $(this).mousemove(function (e) {
    App.idleTime = 0;
  });
  $(this).keypress(function (e) {
    App.idleTime = 0;
  });
});
然后我在我的应用程序路径中有一个调度任务,它监视空闲时间,并在适当的时候处理它。下面的代码是虚构的,但应该会给你一个想法

App.ApplicationRoute = Em.Route.extend({
  idleMax: 10,
  setupBatman: function(){
    this.watchJoker();
  }.on('init'),
  watchJoker: function(){
    Ember.run.later(this, this.watchJoker, 1000);

    if (App.idleTime >= this.get('idleMax')) {
      console.log("You are looking idle, I'm gonna kick you.");
      // kick
    }
  }
});
更新:我感到内疚,它来自这里:

这里有类似的问题---