angular - Angular 5,如何检测用户不活动
问题描述
除了使用 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();
}
}
似乎在这个 stackblitz中工作:打开控制台,3 秒内不要移动鼠标:你会看到消息。
刷新页面,在预览(右侧)上移动鼠标几秒钟:直到您停止 3 秒,该消息才会弹出。
您显然可以将其导出到服务中,因为如您所见,我只使用一个类来执行此操作。
推荐阅读
- azure - 从 Visual Studio 发布到 Azure 时,“InvokePowerShell”任务意外失败
- reactjs - 如何从打开窗口的组件中获取新窗口对象的引用?
- angular - 在 Angular 项目中使用 ngx-mqtt 不提供旧数据(表现得像 hot observable)
- db2 - IBM i系列数据队列在i7上收发速度慢
- ruby-on-rails - 删除时RestClient在rails中找不到错误
- node.js - child_process.on('close') 有时非常缓慢
- asp.net-core - 向 RabbitMQ 发送消息时出现间歇性错误
- java - 读取图像失败:Java
- ios - ios webview中是否有像android webview中的setCacheMode这样的功能?
- asp.net-mvc - 有没有办法复制本地化视图