javascript - 如何使用 SCORM API 检索数据?
问题描述
我正在为医学实习生开发一个简单的 LMS。到目前为止,我已经开发了一个 PHP LMS。对于内容,我准备了一个 SCORM 课程,其中包含使用 Articulate Storyline 软件创建的测验。为了与 SCORM 通信并检索测验结果,我尝试实现 SCORM API。
这是我的运行时环境文件
<html>
<head>
<title>VS SCORM - RTE Frameset</title>
<!-- Rev 1.0 - Sunday, May 31, 2009 -->
</head>
<frameset
frameborder="0" framespacing="0"
border="0" rows="0,*" cols="*" >
<frame src="api.html" name="API" noresize></frame>
<frame src="/packadge/JStest/story.html" name="course"></frame>
</frameset>
</html>
这是api.html
<html>
<head>
<title>VS SCORM - RTE API</title>
<script language="javascript">
var debug = true;
// ------------------------------------------
// SCORM RTE Functions - Initialization
// ------------------------------------------
function LMSInitialize(dummyString) {
if (debug) { alert('*** LMSInitialize ***'); }
return "true";
}
// ------------------------------------------
// SCORM RTE Functions - Getting and Setting Values
// ------------------------------------------
function LMSGetValue(varname) {
if (debug) {
alert('*** LMSGetValue varname='+varname
+' varvalue=value ***');
}
return "value";
}
function LMSSetValue(varname,varvalue) {
if (debug) {
alert('*** LMSSetValue varname='+varname
+' varvalue='+varvalue+' ***');
}
return "true";
}
function LMSCommit(dummyString) {
if (debug) { alert('*** LMSCommit ***'); }
return "true";
}
// ------------------------------------------
// SCORM RTE Functions - Closing The Session
// ------------------------------------------
function LMSFinish(dummyString) {
if (debug) { alert('*** LMSFinish ***'); }
return "true";
}
// ------------------------------------------
// SCORM RTE Functions - Error Handling
// ------------------------------------------
function LMSGetLastError() {
if (debug) { alert('*** LMSGetLastError ***'); }
return 0;
}
function LMSGetDiagnostic(errorCode) {
if (debug) {
alert('*** LMSGetDiagnostic errorCode='+errorCode+' ***');
}
return "diagnostic string";
}
function LMSGetErrorString(errorCode) {
if (debug) {
alert('*** LMSGetErrorString errorCode='+errorCode+' ***');
}
return "error string";
}
</script>
</head>
<body>
<p>
</body>
</html>
但我没有看到这些功能在 SCORM 项目启动时被触发。
如何获得测验结果并提醒它?(我的想法是,如果我可以这样做,我将能够通过 ajax 将结果发送到服务器)
解决方案
为了让任何课程都能找到 API,您需要声明 window.API 并且 API 本身包含所有这些 LMSxxxxxxx() 函数。
例如:
var SCORM = {}; // Create blank object
// ------------------------------------------
// SCORM RTE Functions - Initialization
// ------------------------------------------
SCORM.LMSInitialize = function(dummyString) {
if (debug) { alert('*** LMSInitialize ***'); }
return "true";
}
// ------------------------------------------
// SCORM RTE Functions - Getting and Setting Values
// ------------------------------------------
SCORM.LMSGetValue = function(varname) {
if (debug) {
alert('*** LMSGetValue varname='+varname
+' varvalue=value ***');
}
return "value";
}
// repeat for other LMSxxxxx() functions then assign to window.API
window.API = SCORM;
推荐阅读
- kiwi-tcms - 无法克隆测试用例 - 过滤计划在下一页打开
- android - 在 web 视图中呈现包含数学方程式的 HTML 数据
- php - 如何在moodle中向现有查询添加类似条件
- python - 如何从 Selenium webdriver Firefox 中的“driver.page_source”获取 HTTP 请求的原始 JSON 响应
- python - 在 django 中执行外部脚本的推荐做法是什么?
- swift - iOS:GMSPlacePickerViewController 国家限制
- javascript - Highcharts - 在同步图表中重置缩放
- javascript - Axios 中的单元测试拦截器逻辑
- docker - 使用 docker-compose 的 Dockerfile 中定义的卷
- angularjs - 如何在 promise then() karma 和 jasmine 中对条件进行单元测试