js统计在线学习时间

/***
 * 在线学习时间统计工具类
 * @param 参数对象,包含对象( ElemtKey:元素标识  Eventtype:事件类型 mp4wode 两种类型    openurl:打开url(缺省值))
 * @param cb:回调函数
 */
function countElemtDateTime(pars,cb) {
    var mythis,
        second=0,
        timeobj,
        win;
    var ElemtKey=pars['ElemtKey']?pars['ElemtKey']:"",
    Eventtype=pars['Eventtype']?pars['Eventtype']:"",
    openurl=pars['openurl']?pars['openurl']:"";
    //返回这些内部函数是为了(考虑其他业务逻辑),
    // 利于外部直接调用事件,
    // 而不需要等待页面销毁后自动调用
    return {
        "start":function () {
            mythis=this;
            //如果下次进来或者刷新保留上次时间
            second=JSON.parse(localStorage.getItem(ElemtKey))?
                JSON.parse(localStorage.getItem(ElemtKey)):0;
            localStorage.setItem(ElemtKey,second)
            switch(Eventtype){
                case 'mp4':
                    this.setStartTime();
                    break;
                case 'openurl':
                    window[ElemtKey]=window.open(openurl);
                    $(window[ElemtKey]).ready(function(){
                        mythis.setStartTime();
                        console.log('已启动监听');
                    });
                    break;
            }
        },
        "setStartTime":function () {
            timeobj=window.setInterval(function () {
                second +=1000;
                console.log('已启动时间'+second);
                localStorage.setItem(ElemtKey,second);
                if(window[ElemtKey]['closed']){
                    mythis.stop();
                }
            }, 1000);
        },
        "stop":function () {
            //先停止计时
            clearInterval(timeobj);
            if(cb){
                //返回统计数据
                cb({
                    datatimes:localStorage.getItem(ElemtKey),
                    callback:function () {
                        localStorage.setItem(ElemtKey,0);
                        //清除数据
                        delete window[ElemtKey];
                    }
                });
            }
        },
    }

}

/***
 * 使用案例
 * @type {countElemtDateTime}
 */
var timecount=new countElemtDateTime({
        ElemtKey:"moka"+parseInt(Math.random(1000)*10000),
        Eventtype:"openurl",
        openurl:"http://blog.csdn.net/weixin_36065510",
    },function (data) {
        if(data){
            //此处处理自己的业务逻辑,比如保存数据到数据库。。。
            console.log("业务处理完成后");
            //调用回调函数清除本次数据
            data.callback();
        }
    }
);
timecount.start();
本文对你有帮助?欢迎扫码加入前端学习社群:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值