内容无法找到 SCORM API 适配器

问题描述 投票:0回答:1

我是 SCORM 新手,面临 SCORM 初始化问题。

我遇到的错误是内容无法找到 SCORM API 适配器。 我想做的是,我正在创建一个 iframe

<iframe id="demo_page_iframes" src="index.html" width="100%" height="100%"></iframe>  
这是我的父 iframe,我在其中调用位于 scorm 包中的 index.html 文件。 它正确加载了我的index.html,但在网络选项卡中,我看不到任何包含或加载的manifest.xml,并且显示一个弹出窗口,上面提到的错误。

我正在使用包装器 pipwerks https://github.com/pipwerks/scorm-api-wrapper 并包含其 SCORM_API_wrapper.js。

查看 SCORM_API_Wrapper.js 后,我看到有评论说要定义版本和 API 对象,我保持原样,因为我假设包装器会自动从 index.html 获取数据并将其添加到此处。如果我错了请纠正我或者我需要在这里进行任何更改。

var pipwerks = {}; //pipwerks 'namespace' helps ensure no conflicts with possible other "SCORM" variables
    pipwerks.UTILS = {}; //For holding UTILS functions
    pipwerks.debug = { isActive: true }; //Enable (true) or disable (false) for debug mode

    pipwerks.SCORM = { //Define the SCORM object
        version: null, //Store SCORM version.
        handleCompletionStatus: true, //Whether or not the wrapper should automatically handle the initial completion status
        handleExitMode: true, //Whether or not the wrapper should automatically handle the exit mode
        API: {
            handle: null,
            isFound: false
        }, //Create API child object
        connection: { isActive: false }, //Create connection child object
        data: {
            completionStatus: null,
            exitStatus: null
        }, //Create data child object
        debug: {} //     debug child object
    };

此外,我面临的问题只是当我尝试开始上课时。我认为问题是要么我没有加载manifest.xml,我不知道如何将其包含在pipwerks包装文件中(或者它已经这样做了),要么我需要在pipwerks包装js文件中定义配置。 因为我在带有包装器 ngx 包装器的 Angular 上使用了 scorm 包,并且它工作正常并正确加载了具有我的规格的 manifest.xml 文件。但是,当我在 PHP 端开始课程并加载我的 iframe 并使用 index.html 将我的内容添加到我的父 iframe 中时,它在初始化时失败。

添加了 pipwerks

wrapper.js
并期望
manifest.xml
自动加载,配置也基于
index.html
和清单

javascript scorm scorm2004 scorm1.2
1个回答
0
投票

编辑:阅读 Scorm 文档后,我理解了这个问题。让我分解一下步骤。

1:在初始化之前,您当前的窗口或父窗口或打开窗口(取决于它如何显示内容)应该具有基于 scorm 版本的 API 对象。

2:标准 scorm 包包含一个 XML 文件(两个版本)。

3:您需要解析 XML,它应该有两个重要的内容。

a:SCORM 版本:我相信应该在 schemaversion 标签中。

b:索引文件或需要加载的第一个文件的路径。 这应该位于 resources->resource->href 标签中。

4:一旦你得到了这些东西,现在你可以根据你需要的版本来准备你的API对象了。

5:如果版本是1.2,scorm将寻找API对象,在2004年的情况下,它是API_1484_11

6:该对象应该具有基于所需版本的函数实现,例如Initialize(2004) LMSInitialize(1.2)、SetValue(2004) LMSSetValue(1.2) 等等,类似地需要什么 CMI 模型。 您可以从这里检查:https://scorm.com/scorm-explained/technical-scorm/run-time/run-time-reference/#section-2

7:将此对象分配给当前窗口或父窗口。

最后,您需要加载我们在 3b 中获得的 HTML,并将其加载到新窗口或 iframe 中。

HTML 通常有一个 onLoad 函数,它会调用初始化函数,然后查找您定义的 API 对象。找到后,初始化成功。

现在,当您浏览内容时,LMS 可以通过您实现的函数(SetValue、GetValue)进行通信,并且您可以添加跟踪或任何您想要的内容。

注意:Pipwerks 包装器是这两个版本的实现,它查找这些对象并启动通信。您需要自己实现这些功能并将对象分配给窗口(我认为这已经完成,因此卡住了)。

© www.soinside.com 2019 - 2024. All rights reserved.