在 SCORM 中跟踪 HTML5 变量

Keeping track of an HTML5 variable in SCORM

我最近一直在做一个小的 HTML5 项目,要集成到电子学习包中。本质上它就像一个小型 HTML5 游戏,用户必须成功完成才能通过课程。但是我对 SCORM 或电子学习包一无所知。我认为很容易跟踪一个人是否已成功完成游戏作为 html5 中的一个变量,并用它来传递到课程的下一部分来说明他们是否通过了.然而,当我将我的部分移交给将其整合到课程中的公司时,他们不确定它如何 link in.

是否有一种简单的方法可以在 SCORM 页面之间移动 (pass/fail) 变量...或者可以根据 HTML5 中的变量选择下一步要完成的课程部分? 或者,是否有一种简单的方法来读取或写入可以存储在电子学习环境中的外部文件?

如有任何建议,我们将不胜感激。

SCORM 提供一种称为“objectives”的机制来跟踪 pass/fail(或 complete/incomplete)和分数。

您需要设置的数据模型元素是:

cmi.objectives.n.id (CMIIdentifier, RW) Unique label for the objective

cmi.objectives.n.status ("passed", "completed", "failed", "incomplete", "browsed", "not attempted", RW) Indicates whether the learner has completed or satisfied the objective

因此,假设您有对名为 API 的 SCORM API 的引用,并且没有设置其他 objective,您可以执行以下操作:

API.LMSSetValue("cmi.objectives.0.id", "IDForYourObjective");
API.LMSSetValue("cmi.objectives.0.status", "passed");

pass/fail 值稍后可以通过以下方式检查:

objectiveStatus = API.LMSGetValue("cmi.objectives.0.status");

如果可能还有其他 objective,您需要检查计数 (cmi.objectives._count) 并使用它来确定下一个可用索引(而不是上面的 0 ).

如果您是唯一需要读写数据的人,您可以考虑使用 cmi.suspend_data(这只是一个非结构化存储桶)。这不是我的第一个建议,因为你提到你的工作会与其他人的工作集成,所以我会避免在没有确认他们不会也使用它的情况下使用它。

更多 SCORM 运行时信息:https://scorm.com/scorm-explained/technical-scorm/run-time/run-time-reference/

如何找到 SCORM API:https://scorm.com/scorm-explained/technical-scorm/run-time/api-discovery-algorithms/

在此回复中,我假设这将包含在 SCORM 1.2 单 SCO 包中。响应与 2004 年类似,但略有不同(如您在上面的 link 中所见)。如果这是多 SCO 内容,无论是谁将您的工作一起打包到内容包中,都必须将您正在创建的 objective 声明为“全局 objective”,以便其他 SCO 可以读取其值.

页数:

如果您有单独的 HTML 页面进行初始化,则可能需要您将所有页面包装在一个 IFRAME 中。主要原因是 LMS 可能会在页面之间监听您的 load/unload,并且由于每个页面都必须建立与 SCORM API 的连接,因此可能 "think" SCO 已卸载。有可能不会,但我仍然保持谨慎。当然你也可以做单独的页面。

通讯

SCORM 是一种 JavaScript 通信模型。我在 GitHub 此处 https://github.com/cybercussion/SCOBot/wiki 上详细讨论了它。这将扩展讨论的所有领域并提供一些示例。

版本

通常情况下,如果您达到最低要求,您可以确定您使用的是 SCORM 1.2 还是 2004。然后确定您是否要适当地设置分数和状态以匹配。

状态

完成=本质上的进步。学生看够了吗? 成功 = Pass/fail - 他们的得分够高吗?

祝你好运。