忙着调试一个奇怪的问题,这个问题与一些Flash内容将用户从SCORM模块的进度传递回Moodle的方式有关.
在IE 6,7,8,9,Chrome和Firefox上,一切正常.在IE 10上,Flash模块的进度跟踪未到达服务器.
在SCORM启动程序中,使用以下(古代)代码创建事件处理程序:
<SCRIPT LANGUAGE="VBScript">
on error resume next
sub preloader_FSCommand(ByVal command, ByVal args)
call preloader_DoFSCommand(command, args)
end sub
</SCRIPT>
Run Code Online (Sandbox Code Playgroud)
在Chrome上调试,我可以看到该函数按预期调用.
尝试在IE 10中进行调试失败,因为从未调用过代码.我如何将此代码翻译为Javascript?试图删除VBScript,因为它似乎是问题的一部分.我尝试了以下代码,但没有成功:
<script>
function preloader_FSCommand (command, args) {
preloader_DoFSCommand(command, args);
}
</script>
Run Code Online (Sandbox Code Playgroud)
preloader_DoFSCommand 在代码的其他地方定义,在Chrome/Firefox /等上被称为正常,但在IE 10上则没有.
更新:似乎问题的一部分与IE 10不再支持标准模式下的FSCommand有关.问题现在变成了什么是合适的解决方法,它不需要更改Flash/SCORM内容?
我尝试在不运行我的LMS(学习管理系统)的另一个域上托管一个SCORM电子学习模块。SCORM模块通常在它们自己的浏览器框架/窗口中运行,并且直接与LMS通信,并且全部在同一域上运行。这没有问题,因为没有安全问题。已经用我的代码尝试过这种情况,它可以工作。
为了将模块存档在其他服务器上,我尝试使用包装器之类的东西。这些包装器托管在LMS上,从extern加载内容,并通过postMessage与LMS进行通信。我尝试了这个开源项目:https://github.com/Didask/scol-r
但是我不起作用。每当我遇到错误时:Error grabbing 1.2 API-SecurityError:Blocked a frame with origin "https://..." from accessing a cross-origin frame. Protocols, domains, and ports must match.
尝试访问不允许的内容。在“ SCORM_ScanParentsForApi”方法中引发异常。
我已经问过这个项目的作者了,但是他根本没有答案。我在响应中设置了一个小型演示项目来模拟LMS。添加了包装器模块,该包装器模块指向托管SCORM模块的外部内容服务器。
也许有人有想法或可以给我提示。我认为这是微不足道的。希望;)谢谢!
我正在开发符合SCORM的LMS,并且在Captivate生成的内容方面存在一些问题.
基本上,行为是:如果你看到一个SCO(吸引生成的内容),例如每张幻灯片中有15张幻灯片和1个问题,我的lms不跟踪所有15个问题,只跟踪前3个或4个.如果你等了很长一段时间,或者如果你把内容放慢,它工作正常.
经过大量的谷歌搜索,调试和追踪,最后,我发现了两个主要问题:
1)Captivate - SCORM API通信是异步的(与flash-javascript通信相同).因此,当用户快速看到内容时,函数调用变得越来越失败,并且最后,用户可能正在回答问题15,并且内容正在发送问题4信息.我无法更改Flash或JS-Flash界面,因为这是由Captivate提供的.
有一种方法可以实现这种同步吗?我的意思是,迫使闪光灯等一些方式?
2)每次调用函数都需要更长的时间,例如,setValue第一次需要7毫秒,最后一次需要调用200.
要理解这个问题,这里有一点背景:Captivate内容(所有内容确实但更多的内容)多次调用特定函数,SetValue函数,一个SCORM API函数.此函数接受两个参数(fieldName,value),第一个是要设置的字段的名称,第二个是新值.在我的实现中,此函数首先使用正则表达式验证值,然后在对象中设置值.
好的,我可以添加更多信息,但我不知道什么是真正重要的,我不希望你修改我的代码而不看它,但我没有想法,需要新的意见,想法,方向....也许那个sombody问正确的问题......帮助:)
谢谢
我有一个原生的基于Android Moodle的应用程序,我必须在应用程序中显示SCORM格式的课程.
有人可以帮我解决这个问题......
这些课程以SCORM格式上传到我的Moodle网站.
该get_course_contents网络服务给了我一个网址指向课程文件,这里指定
https://github.com/dongsheng/moodle/wiki/WebService:get_course_contents
如何在我的原生Android应用程序中显示这些SCORM文件?
我是否需要解析imsmanifest.xml文件并获取SCORM包的详细信息并显示HTML5内容?还是有另一种/更好的方法?
**
**
更新:
我现在尝试在a中显示SCORM包内容WebView.
我的SCORM包就像:

我已将此包复制Assets到我的POC项目的文件夹中.
我的WebView设置是:
settings.setJavaScriptEnabled(true);
settings.setPluginsEnabled(true);
PluginState state = PluginState.ON;
settings.setPluginState(state);
settings.setAllowFileAccess(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setDatabaseEnabled(true);
String databasePath = this.getApplicationContext()
.getDir("database", Context.MODE_PRIVATE).getPath();
settings.setDatabasePath(databasePath);
webview.loadUrl("file:///android_asset/ttttt.html");
Run Code Online (Sandbox Code Playgroud)
我的表现是:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.html5test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.html5test.MainActivity"
android:hardwareAccelerated="true"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> …Run Code Online (Sandbox Code Playgroud) 当您单击发布到SCORM的Captivate课程中的退出按钮时,应用程序将不会退出.我尝试了所有发布的方法.他们没有工作.Captivate不会在版本7中处理javascript.经过多次尝试,我终于找到了一个可以使用的钩子.问题主要是由Adobe永远不会解雇LMSFinish引起的.(奇怪,因为有两个要求SCORM兼容训练,1.消防LMSInitialize和2.消防LMSFinish.)一旦告诉LMS你完成了,LMS可以清理窗口.Web培训模块无法使用window.close关闭窗口.所以解决方案.
查找Utilities.js它位于$ CaptivateInstallFolder/Templates/Publish/LMS/Standard/SCORM/default/js文件夹中.
找到以下......
function DoCPExit()
{
if(window != window.parent && window.parent && window.parent.hasOwnProperty("DoCPExit"))
{
window.parent.DoCPExit();
}
else
{
window.close();
}
}
Run Code Online (Sandbox Code Playgroud)
并添加以下内容......
function DoCPExit()
{
if(SCORM2004_objAPI){SCORM2004_CallTerminate();}
if(SCORM_objAPI){SCORM_CallLMSFinish();}
/* The code below will only work if there is a parent. No parent. No close.*/
if(window != window.parent && window.parent && window.parent.hasOwnProperty("DoCPExit"))
{
window.parent.DoCPExit();
}
else
{
window.close();
}
}
Run Code Online (Sandbox Code Playgroud)
我回答了自己的问题,但我认为有人可能会从我的痛苦中受益.LMS可以关闭窗口,因为LMS打开它.
我希望这可以帮助别人.
我正在尝试创建一个SCORM包并为其生成语句.
我想创建一个本地LRS和Tin Can Api设置并从我的scorm生成语句并在我的php页面中显示结果.
我使用以下链接创建了一个LRS(http://onetarek.com/tin-can-api/guidephp-simple-lrs-with-tin-can-api/).
我已经下载了Tin Can Php样本并安装在我当地,不幸的是它无法正常工作.因为我需要设置我的端点和身份验证凭据.我不知道这是我在LRS的本地设置.
这该怎么做 ?
我还希望将SCORM包托管到任何LMS并使用这些设置进行测试.
我已经分析了许多论坛和帖子,但没有成功.
我搞不清楚了.需要一些决议.
请帮助.
-Vignesh Selvarajan
我花了相当多的时间来搜索SCORM 1.2 API教程/示例,结果证明这是一项相当困难的任务.
我找到的唯一样本是:http: //www.vsscorm.net/2009/05/30/ground-rules/
这是一个可靠的教程,但我想从其他来源找到更多信息.
所有建议表示赞赏.
我想更好地了解xAPI/Tin Can的工作原理(我今后称之为xAPI)
之前我正在为SCORM 1.2 LMS开发,其中有"记录",例如:每个内容包的原始尝试,状态和原始分数.LMS希望升级到xAPI,但我不确定xAPI如何工作的理论.
在http://tincanapi.com/learning-record-store/上说明:
存储在LRS中的数据可以由LMS,报告工具或其他LRS访问,并且可以存储为单独的学习记录和/或整个成绩单
随后在http://www.learningsolutionsmag.com/articles/1271/the-xapi-and-the-lms-what-does-the-future-hold上,它还声明:
具有内置LRS的LMS支持Experience API,还可以执行LMS产品管理学习交付所做的所有其他事情.
问题是,
LMS和LRS之间的这种关系到底意味着什么?我需要能够从位于LMS 之外的应用程序设置所述LMS"记录" ,如何使用xAPI执行此操作?
或者我可能完全误解了xAPI LRS,它是否完全取代了LMS记录?
谢谢您的帮助.关于此的信息资源的链接也将不胜感激.
在构建电子教学解决方案之前,我决定是使用Captivate或Storyline等创作包,还是创建利用JS调用进行跟踪的HTML页面.如果我避免使用创作工具,我会在内容和现有资产的重用方面获得灵活性.例如,Storyline正在输出SWF文件,我无法将其传递给我的团队,就像一个简单的HTML页面一样.但是,我是SCORM的新手.我想知道实现SCORM LMS跟踪JS调用以及我的自定义HTML页面是否可行,或者更好的方法是从创作工具开始?