Angular 5,如何检测用户不活动

标签 angular

除了使用 IdleJS 和 ngDoCheck(),我们如何检测 Angular 5 中的用户不活动?

谢谢

最佳答案

你可以试试这个:

export class AppComponent {

  userActivity;
  userInactive: Subject<any> = new Subject();

  constructor() {
    this.setTimeout();
    this.userInactive.subscribe(() => console.log('user has been inactive for 3s'));
  }

  setTimeout() {
    this.userActivity = setTimeout(() => this.userInactive.next(undefined), 3000);
  }

  @HostListener('window:mousemove') refreshUserState() {
    clearTimeout(this.userActivity);
    this.setTimeout();
  }
}

似乎在 this stackblitz 中工作:打开控制台,不要移动鼠标 3 秒:您会看到消息。

刷新页面,将鼠标在预览(右侧)上移动几秒钟:消息不会弹出,直到您停止 3 秒。

您显然可以将其导出到服务中,因为如您所见,我只使用一个类来执行此操作。

关于Angular 5,如何检测用户不活动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51650916/

相关文章:

html - 从 typescript 调用 CSS 样式将其附加到 html 文件

angular - 窗口未使用 Angular4 + AoT + Webpack2 定义

javascript - Angular 5 子组件公开属性但不公开方法

angular - Jasmine Angular 测试有时通过有时不通过,具体取决于 Describe 前缀

angular - Angular 6 中的图像轮播

Angular 2 : routeLink does not create href attribute

angular - 如何动态切换主题与vmware清晰

node.js - 使用 Angular cli 创建 Angular 项目时出现问题

angular - 用于包裹 Angular Material 输入的组件不显示错误样式

angular - 我可以自定义 Angular 全局错误处理程序,使其不仅仅是一个错误参数吗?