如何处理丢失的SCORM 2004 API实例

时间:2019-10-25 15:51:09

标签: javascript scorm scorm2004

我有一个非常简单的内部LMS。它实质上由处理启动课程的ASP.Net页面和SCORM 2004 API的javascript实现组成。 javascript的实现包含在ASP.Net启动器页面中,其中使用一个简单的标题部分。

页面在新窗口中启动符合SCORM的课程时,它将使用标准的SCORM API搜索算法,并在LMS课程启动器页面上找到SCORM API的实例。到目前为止,这都是非常标准的SCORM行为,与众不同。

我遇到的问题是,如果由于某种原因刷新了启动器页面,则该API实例将丢失,并且该课程不再能够与该API通信。我已经回到SCORM 2004标准文档,并且在其中找不到关于SCO在这种情况下应该做什么的任何信息。

这仅仅是SCORM体系结构的限制,还是我可以在实现中做一些事情来防止这种情况发生?

SCO是否有责任再次尝试搜索SCORM API并重新初始化它?

我知道有很多实现SCORM的LMS,而且我想知道是否有人知道他们实施了什么方法来防止这种情况发生?

熟悉SCORM LMS体系结构的人有什么建议来防止在重新打开打开器页面时丢失API实例吗?

1 个答案:

答案 0 :(得分:0)

这里的主要问题是,刷新播放器窗口后,内容窗口与播放器之间的window.opener关系将不再有效。即使您可以让内容再次尝试其API搜索算法,也不能因此而工作。

一种替代方法是每当刷新/关闭播放器窗口时强制退出内容。我在一家非常受欢迎的SCORM播放器公司工作,这就是我们要走的路。

当播放器页面打开包含内容的窗口时,您可以在变量中保留对该新窗口的引用。然后,在页面上的beforeunload / unload处理程序中,您可以检查内容窗口是否仍处于打开状态,并作为退出例程的一部分将其关闭。

虽然与您想要的结果不太一样,但它确实使学习者无法继续与内容进行交互,而这种状态实际上不会持久化。

相关问题