如何计算用户在当前页面停留的时间

wx3046 2011-01-01 03:01:35
情况是这样的,目前在做一个在线学习的系统,其中一个模块是文件学习,我做成了类似百度文库那种,当用户在阅读的时候就给用户计时,因为一个文件规定了要学习多长时间。

网上看到的方案有两种,一个是body的onfocus和onblur的事件,这种可以检测到页面最小化,或者是用户已经切换到其他页面。但是又一个问题是在阅读的页面里点击了某个链接计时就会失效,例如点击页面中flash文档的滚动条就会失效,点击一个下载链接就会失效。

还有一种就是:
<body>
<script>
function check(){
if(window.screenTop<-30000&&window.screenLeft<-3000)
{
alert('最小化');
}
else if(document.body.offsetWidth == screen.availWidth){
alert('最大化');
}
else
{
alert('不是最大化');
}
}

setInterval("check()",3000);
</script>这种代码

不过这样也有不足的地方,那就是如果用户不点击最小化,而是直接通过任务栏切换到其他页面的话,就检测不出来用户已经离开了。


所以特在此发帖请教各位大大。谢谢
...全文
358 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wx3046 2011-01-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 caikanxp 的回复:]

页面刚加载时,创建一个new Date()对象,用于保存页面“打开的时刻”(可以保存为全局变量)。

之后可以通过setInterval()或其他方式,定时检测或事件触发检测当前时刻,与上面保存的“打开的时刻”相减,便可得知页面打开了多久。
[/Quote]

你的跟楼上的那个一样额
wx3046 2011-01-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhyzdl 的回复:]

看下我这段程序合不合你的要求
<html>
<body onunload="showtime()">
<script language=javascript type=text/javascript>
pageOpen=new Date();

function showtime()
{
pageClose=new Date();
minutes=pageClose……
[/Quote]

这个肯定不行的。。因为我要检测页面时活动页面的时候的时间,如果别人最小化也计时的话就不行了
CaiKanXP 2011-01-01
  • 打赏
  • 举报
回复
页面刚加载时,创建一个new Date()对象,用于保存页面“打开的时刻”(可以保存为全局变量)。

之后可以通过setInterval()或其他方式,定时检测或事件触发检测当前时刻,与上面保存的“打开的时刻”相减,便可得知页面打开了多久。
zhyzdl 2011-01-01
  • 打赏
  • 举报
回复
看下我这段程序合不合你的要求
<html>
<body onunload="showtime()">
<script language=javascript type=text/javascript>
pageOpen=new Date();

function showtime()
{
pageClose=new Date();
minutes=pageClose.getMinutes()-pageOpen.getMinutes();
seconds=pageClose.getSeconds()-pageOpen.getSeconds();
time=(seconds+(minutes*60));
if(time==1)
{
time="你在本网页用了"+time+"秒钟";
}

alert(time);
}

</script>
</body>
</html>
wx3046 2011-01-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 net_lover 的回复:]

即使开着页面,你就能认为他在学习吗?何必这么复杂呢?
[/Quote]

哎。。人家就要求这样做的,我也没办法啊
孟子E章 2011-01-01
  • 打赏
  • 举报
回复
即使开着页面,你就能认为他在学习吗?何必这么复杂呢?

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧