Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何处理丢失的SCORM 2004 API实例_Javascript_Scorm_Scorm2004 - Fatal编程技术网

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

Javascript 如何处理丢失的SCORM 2004 API实例,javascript,scorm,scorm2004,Javascript,Scorm,Scorm2004,我有一个相当简单的内部LMS。它基本上由一个ASP.Net页面和SCORM 2004 API的javascript实现组成,ASP.Net页面处理启动课程。javascript实现包含在ASP.NETLauncher页面上,在head部分使用一个简单的include 当页面在新窗口中启动符合SCORM的课程时,它使用标准SCORM API搜索算法,并在LMS课程启动器页面上定位SCORM API实例。到目前为止,这都是相当标准的SCORM行为,没有什么不同寻常的 我遇到的问题是,如果启动器页面由

我有一个相当简单的内部LMS。它基本上由一个ASP.Net页面和SCORM 2004 API的javascript实现组成,ASP.Net页面处理启动课程。javascript实现包含在ASP.NETLauncher页面上,在head部分使用一个简单的include

当页面在新窗口中启动符合SCORM的课程时,它使用标准SCORM API搜索算法,并在LMS课程启动器页面上定位SCORM API实例。到目前为止,这都是相当标准的SCORM行为,没有什么不同寻常的

我遇到的问题是,如果启动器页面由于某种原因被刷新,那么API实例将丢失,课程将不再能够与API通信。我已经查阅了SCORM 2004标准文档,在其中找不到任何关于上海合作组织在这种情况下应该做什么的内容

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

上海合作组织是否有责任再次搜索SCORM API并重新初始化

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


熟悉SCORM LMS体系结构的人是否有任何建议来防止在重新加载opener页面时丢失API实例?

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

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

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


虽然这与您想要的结果并不完全相同,但它确实会阻止学习者继续与内容进行交互,因为他们的进度实际上不会持续。

感谢您的建议,我可能会长期实施类似的内容。目前,我已经通过修改课程构建软件输出的启动URL为其添加了一个绷带,以便它加载对SCORM API本身的引用。它可以工作,但不是一个好的永久解决方案,因为每次发布课程时都需要修改输出文件以添加参考。