Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我使用Angular,我需要计算某人在页面上的时间_Javascript_Angular_Timer - Fatal编程技术网

Javascript 我使用Angular,我需要计算某人在页面上的时间

Javascript 我使用Angular,我需要计算某人在页面上的时间,javascript,angular,timer,Javascript,Angular,Timer,我已经看到了一些使用vanilla JS和jQuery的方法,但不幸的是,没有一种方法是关于如何使用Angular解决这个问题的 我不是最有经验的,但我正在尽我最大的努力获得某种计时器,当用户单击某个页面时,它会触发计数器,然后在他离开页面时使用ngOnDestory,停止计数器并将其发送到后端以将其存储在DB中 如果有人能就最简单的方法提供任何建议,请让我知道。我读过一些东西,比如TimeMe.js,它们很棒,但不知道如何使用Angular实现它。还可以在上看到窗口事件处理程序 如果用户处于非

我已经看到了一些使用vanilla JS和jQuery的方法,但不幸的是,没有一种方法是关于如何使用Angular解决这个问题的

我不是最有经验的,但我正在尽我最大的努力获得某种计时器,当用户单击某个页面时,它会触发计数器,然后在他离开页面时使用ngOnDestory,停止计数器并将其发送到后端以将其存储在DB中

如果有人能就最简单的方法提供任何建议,请让我知道。我读过一些东西,比如
TimeMe.js
,它们很棒,但不知道如何使用Angular实现它。还可以在上看到窗口事件处理程序

如果用户处于非活动状态或没有查看页面,这并不重要,这可以在之后解决,首先我需要计时器,以便进行一些研究


非常感谢您抽出时间。

您可以使用ngOnInit和Ngondestory之类的工具保存时间戳

ngOnInit (){
    this.startTime = Date.now();
}
ngOnDestroy (){
    this.endTime = Date.now();
    totalTime = this.endTime - this.startTime;
}

然后totalTime将是您可以发送到后端的时间

您可以使用Date.now()在ngOnInit中记录时间戳,然后再次在Ngondestory()中记录时间戳,并将两者的差异发送到后端这实际上是一个非常好的主意,我将尝试对其进行计算并发布答案。如果您希望获得良好答案的好评,请创建一个答案,以便其他用户也能从中受益,谢谢@AbhaySehgalSince如果用户未查看选项卡,脚本将及时停止运行,我建议实际存储打开页面和关闭页面以及计算服务器端差异的时间戳。这样就可以得到页面打开的实际时间。如果你像时钟一样使用超时或间隔来计算秒数,你会注意到你只得到查看页面的时间,不包括在其他选项卡上花费的空闲时间。因此,我会在打开和关闭时发送给DB,而不是仅在关闭时发送。非常好的观点@Shilly,再次与上面的Abhay相同如果你想用一个小例子来解释这一点,请将其发布在回答部分,以帮助其他用户,以防他们遇到此问题,谢谢!