如何阻止SCORM包模块重复弹出‘New Attempt or Resume’提示并默认续学
解决SCORM模块默认续学、取消“重新尝试/继续”提示的方案
一、修改SCORM内容包的manifest配置文件(imsmanifest.xml)
针对不同SCORM版本,调整manifest里的规则,强制默认续学:
SCORM 1.2版本
在<organization>标签内添加sequencing配置,限制尝试次数并设置默认续学规则:<organization identifier="your-org-id"> <imsss:sequencing> <!-- 禁用用户自主选择流程、导航 --> <imsss:controlMode choice="false" flow="false" navigation="false"/> <!-- 限制仅允许1次尝试 --> <imsss:attemptLimit>1</imsss:attemptLimit> <imsss:sequencingRules> <!-- 始终执行续学动作 --> <imsss:rule condition="always" action="continue"/> </imsss:sequencingRules> </imsss:sequencing> <!-- 其他原有内容 --> </organization>SCORM 2004版本
在对应<item>标签下的sequencing配置中,禁用新尝试并开启续学数据读取:<item identifier="your-item-id"> <sequencing> <!-- 禁止新尝试,允许读取续学数据 --> <deliveryControls allowNewAttempt="false" resumeData="true"/> <rollupRules> <rollupRule action="setCompleted" condition="satisfied"/> </rollupRules> </sequencing> <!-- 其他原有内容 --> </item>
二、调整内容包的SCORM API调用逻辑
在内容包的初始化JS代码里,直接检查已有进度并跳转,跳过提示环节:
function initSCORM() { // 获取SCORM API实例(确保你的项目已实现这个函数) var scormAPI = getSCORMAPI(); if (!scormAPI) return; var initSuccess = scormAPI.LMSInitialize(""); if (initSuccess === "true") { // 获取已保存的学习状态和位置 var lessonStatus = scormAPI.LMSGetValue("cmi.core.lesson_status"); var savedLocation = scormAPI.LMSGetValue("cmi.core.lesson_location"); // 如果已有学习进度,直接跳转到保存的位置 if (lessonStatus !== "not attempted" && savedLocation) { window.location.href = savedLocation; } } } // 页面加载时执行初始化 window.onload = initSCORM;
三、LMS平台后台配置(若有权限操作)
登录你的LMS管理后台,找到对应SCORM课程的设置项:
- 关闭“允许用户发起新尝试”的开关
- 将课程默认访问行为设置为“续学上次学习进度”
不同LMS(如Moodle、Blackboard)的具体路径不同,核心是找到尝试控制和续学配置相关选项。
四、验证测试
修改完成后重新打包SCORM内容包,上传到LMS,用已有学习进度的账号访问,确认不再弹出“重新尝试/继续”提示,直接进入上次学习的页面。
内容的提问来源于stack exchange,提问作者Shyam Sunder Ghai
相关产品推荐
相关产品推荐

