情况是这样的,目前在做一个在线学习的系统,其中一个模块是文件学习,我做成了类似百度文库那种,当用户在阅读的时候就给用户计时,因为一个文件规定了要学习多长时间。网上看到的方案有两种,一个是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>这种代码不过这样也有不足的地方,那就是如果用户不点击最小化,而是直接通过任务栏切换到其他页面的话,就检测不出来用户已经离开了。
所以特在此发帖请教各位大大。谢谢

解决方案 »

  1.   

    看下我这段程序合不合你的要求
    <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>
      

  2.   

    页面刚加载时,创建一个new Date()对象,用于保存页面“打开的时刻”(可以保存为全局变量)。之后可以通过setInterval()或其他方式,定时检测或事件触发检测当前时刻,与上面保存的“打开的时刻”相减,便可得知页面打开了多久。