0

我必须构建一些东西来使用通过配置有 scorm 输出的 Captivate 培训/测验收集的数据。我已经对 LMS 与 scorm 的交互进行了一些研究,但似乎并不能完全理解它。我的意思是,我知道 scorm 是一种过时的标准,而且我见过的大多数解决方案或多或少都是指向过度定价许可方向的策略。

当我尝试运行其中一个训练文件时,在推进幻灯片时出现以下错误 - 'g_objAPI' 为空或不是对象。根据我从阅读中收集到的信息,我假设我需要构建脚本以通过 LMS 专有功能之一实例化该对象 -

LMSInitialize()
LMSFinish()
LMSGetValue()
LMSSetValue()
LMSCommit()
LMSGetLastError()
LMSGetErrorString()
LMSGetDiagnostic()

但我有一种感觉,或者我被引导相信它的意义远不止于此。我不能只与scorm互动吗?或者知道什么时候触发了一个事件,我可以通过我的一个处理函数移植数据。还是真的像在演示完成后访问这个 g_objAPI 一样简单?阅读那里的一些参考资料并没有真正涉及到这一点。我的意思是我可以在清单中添加一个 js,但是可以使用哪些可访问的内容?我知道有很多人支持使用这个标准,但考虑到它最近的版本是 2004 年,它不是一个非常现代的标准,而且这不是在 ajax、jquery 和其他技术出现之前设计的吗?这似乎是一种古老的设计模型。对不起,最后有点沮丧。

4

1 回答 1

0

SCORM 是一个标准,它不强制使用任何特定技术(尽管它暗示了 javcascript 并且几乎每个实现都在 javascript 中)。我自己已经成功地将 SCORM 与 ajax 和许多 js 框架(jquery、原型)结合使用。所以它是旧的,但不是过时的。1.2 版也非常成功并且使用非常广泛(与 SCORM2004 不同)。

话虽如此,构建一个SCORM播放器还是相当复杂的。至少,您需要使用您提到的功能实现一个 API 对象。例如:

function API(){}
window.API     = API;
API.LMSInitialize     = LMSInitialize;
API.LMSFinish         = LMSFinish;
API.LMSGetValue       = LMSGetValue;
API.LMSSetValue       = LMSSetValue;
API.LMSCommit         = LMSCommit;
API.LMSGetLastError   = LMSGetLastError;
API.LMSGetErrorString = LMSGetErrorString;
API.LMSGetDiagnostic  = LMSGetDiagnostic;

function LMSInitialize() {
//...do your SCORM-compatible stuff
}

为了实现完整的 SCORM 标准,包括对象模型,您实际上需要编写数千行代码(我知道,因为我已经这样做了)

我建议您查看包含 SCORM 播放器的开源 LMS o 项目,以了解您需要做什么(或者,如果他们的许可证批准,请按原样使用他们的代码)

于 2013-02-22T09:36:53.493 回答