【发布时间】:2016-01-29 10:59:32
【问题描述】:
我在使用 HTML5 SCORM 包时遇到了一些问题。
TL;DR; 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 调用的,由用户决定用来创建它的任何应用程序生成. (口齿清晰,着迷等)
【问题讨论】:
-
正文卸载事件的热门问题。确保改为使用窗口。我通常为 window.unload 和 onbeforeunload 设置监听器。
-
您是在使用自定义 JavaScript 来处理 SCORM,还是使用来自 3rd 方工具的代码?从您在下面对 Andrew 的评论中,您提到了 Articulate 和 Captivate,但您的问题写得好像您自己在编写 JS。如果没有清晰的图片(和实际代码),就很难提供有用的反馈。
-
抱歉没有完全清楚,我已经编辑了帖子以包含更多信息。我无法提供导致问题的软件包。我只能假设应用程序 (Adobe Captivate) 正在使用阻止 LMSFinish 代码执行的设置生成包。或类似的规定。我希望有人以前见过这个。
标签: javascript api scorm scorm1.2