0

我在使用 HTML5 SCORM 包时遇到了一些麻烦。

TL;博士; LMSFinish() 没有被调用。SCORM 中的 x.prototype.terminate() 也没有被调用,这让我相信这个包有问题。

LMSFinish() 应该在单击退出按钮(和/或关闭窗口)时调用。然而,LMSFinish() 中的 console.log() 和断点表明它没有被调用。

窗口打开时 LMSInitialise 很好,但是对于 LMSFinish 在检查 SCORM 内部的源并在 window.unload() 函数中放置断点后,我可以看到它只是退出的一部分。

window.unload 调用 closeLms(),而后者又运行经过混淆的 x.prototype.terminate()。这个终止函数似乎在调用一些其他函数之前进行布尔检查,最终导致调用 LMSFinish()。它永远不会走那么远。x.prototype.terminate() 中的布尔检查始终为假。如果我在控制台中将其设置为 true,则其他一些属性不存在,并且生成的函数调用将失败并出现错误。

有谁知道为什么 SCORM 无法运行 LMSFinish()?测试 SCORM 包只是 3 张幻灯片,没有交互。

编辑:唯一编写的自定义 javascript 是 SCORM API 的钩子(LMSInitialise、LMSFinish 等)这些是从 SCORM 包中的 javascript 调用的,由用户决定用来创建它的任何应用程序生成。(清晰,迷人等)

4

2 回答 2

0

根据您的浏览器和其他一些变量,附加到 window.unload 的代码并不总是运行。

更好的方法是定期保存数据并设置一个保存和退出按钮,如果他们想保存他们的工作,您可以鼓励学习者单击该按钮。

您还可以查看 window.onbeforeunload。

于 2016-01-29T11:48:39.503 回答
0

我最终想通了这一点。对于任何可能对 SCORM 行为不正常的人有疑问。

在我的特殊情况下, LMSSetValue() 和 LMSGetValue() 只返回项目中需要的东西。事实证明,无论您是否使用它,它们都需要处理 SCORM 尝试设置和获取的每个值。

我简单地创建了一个对象作为 window.API{} 的属性,并确保它被分配了键值对中 LMSSetValue() 上的所有值,然后这些值就可以在 LMSGetValue() 处检索。

于 2016-04-14T09:20:34.230 回答