SCORM规范中关于cmi.core.session_time的计时问题
2013-11-21 21:07
453 查看
基于工作原因,看过很多课件提供商制作的符合SCORM1.2规范的课件,都直接引用了ADL官方RTE中提供的两个API封装函数库APIWrapper.js和SCOFunctions.js,对于SCOFunctions.js中提供cmi.core.session_time的计时方法,有很大的问题。
首先,声明startDate变量用来保存SCO载入时的时间点,然后在loadPage函数中对该变量进行初始化。
其次,在doBack、doContinue、doQuit中均调用了computeTime方法,该方法用系统当前时间减去startDate变量保存的载入时间来计算学员在该SCO上的学习时间。
从逻辑上来看没什么问题,用结束时间减去开始时间不就是持续时间吗。但这里有个缺陷,因为js脚本是在学员的浏览器中运行的,所以取得的所有时间值均是学员计算机的本地时间,并不是LMS服务器时间,所以学员完全可以在退出SCO前,篡改本地计算机时间而使持续时间变长,想改多少改多少。如果LMS以学员学习时长作为考核标准之一的话,学员可以利用这一缺陷轻松拿到学时。
建议自行计算学习时长并正确设置cmi.core.session_time的值,可采用如下方法:
1、修改computeTime方法,注释掉doLMSSetValue( "cmi.core.session_time", formattedTime );这一行。
2、在课件中增加自己的js代码如下所示
3、以上代码利用定时器每秒检测一次SCO的播放状态,在SCO播放时累计秒数,既能防止学员篡改本地计算机时间来影响计时,也可以在SCO暂停时不记录时长,避免学员挂机攒时长。
当然,以上代码仅针对功利性学习行为而提供的带有典型中国特色的在线课程防挂机机制。
首先,声明startDate变量用来保存SCO载入时的时间点,然后在loadPage函数中对该变量进行初始化。
其次,在doBack、doContinue、doQuit中均调用了computeTime方法,该方法用系统当前时间减去startDate变量保存的载入时间来计算学员在该SCO上的学习时间。
从逻辑上来看没什么问题,用结束时间减去开始时间不就是持续时间吗。但这里有个缺陷,因为js脚本是在学员的浏览器中运行的,所以取得的所有时间值均是学员计算机的本地时间,并不是LMS服务器时间,所以学员完全可以在退出SCO前,篡改本地计算机时间而使持续时间变长,想改多少改多少。如果LMS以学员学习时长作为考核标准之一的话,学员可以利用这一缺陷轻松拿到学时。
建议自行计算学习时长并正确设置cmi.core.session_time的值,可采用如下方法:
1、修改computeTime方法,注释掉doLMSSetValue( "cmi.core.session_time", formattedTime );这一行。
2、在课件中增加自己的js代码如下所示
var session_time = 0; function windowUnload() { // 设置cmi.core.session_time的值,利用convertTotalSeconds方法来格式化时间值 doLMSSetValue("cmi.core.session_time", convertTotalSeconds(session_time)); // do other // 卸载SCO unloadPage(); } function timer() { // 检测SCO播放状态 if (SCO.getStatus() == "PLAYING") session_time++; } window.onunload = windowUnload; window.setInterval("timer()", 1000);
3、以上代码利用定时器每秒检测一次SCO的播放状态,在SCO播放时累计秒数,既能防止学员篡改本地计算机时间来影响计时,也可以在SCO暂停时不记录时长,避免学员挂机攒时长。
当然,以上代码仅针对功利性学习行为而提供的带有典型中国特色的在线课程防挂机机制。
相关文章推荐
- 关于Tomcat同源跨项目中session共享问题
- 关于由于session 和 request设置在dialog中初始化的问题.
- 关于Session过期问题及其解决办法
- 关于Session的机制,实现方式和安全、单点故障问题
- 关于hibenate 中的session is closed问题
- 关于asp.net Session丢失问题的总结
- 关于WebLogic的Session丢失的问题
- 关于集群状况下session共享问题
- 关于asp.net Session丢失问题的总结
- 关于asp.net Session丢失问题的总结
- 关于c# 删除文件夹时SESSION丢失问题解决办法
- 关于Cookie和Session的问题
- 关于gettimeofday函数的使用问题
- 关于asp.net Session丢失问题的总结
- nodejs关于session和cookie的问题
- 关于requests的session方法保持cookie的问题。
- hibernate关于session的关闭问题
- 关于SDK GetSystemTime()的小时问题
- android 关于发起不同网络请求与服务器session不一致问题
- 关于session丢失值的问题