2016-03-28 1 views
0

(Je suis nouveau à SCORM et le développement Web, excusez-moi si je ne l'explique pas quelque chose de trop bien.)Cours SCORM en Iframe ne peut pas trouver API

Je suis en train de lancer des cours SCORM et ont suivi ce tutoriel pour le faire: http://www.vsscorm.net/2009/05/31/getting-started-the-rte-frameset/

Cependant, dans ce tutoriel, ils utilisent un jeu de cadres et des cadres pour établir cette connexion du cours à l'implémentation de l'API. Je dois exécuter mon cours dans un iframe, et je ne sais pas où/comment placer mon document API pour que mon cours SCORM puisse le trouver et s'y connecter, est-ce que quelqu'un sait comment?

Répondre

2

Dans un cours SCORM classique, la connexion API est conservée dans la trame parente alors que le contenu du cours est chargé dans une trame enfant (iframe). Le contenu de l'iframe peut être chargé et déchargé à volonté; le contenu de l'iframe aura tendance à contenir les appels SCORM importants que vous voudriez faire pendant la durée de vie d'un cours, comme le score et l'état d'achèvement, mais ils le feront en relayant l'information au cadre parent, qui possède le communication avec le LMS.

est ici par exemple rapide en utilisant SCORM 1.2 (non testé dans un LMS, barebones, devrait être étoffée)

index.html (cadre parent)

<!doctype html> 
<html> 
    <head> 
    <meta charset="utf-8" /> 
    <title>Course Title</title> 
    <style> 
    /* Use CSS to make the iframe fill the parent frame, 
     giving impression no frames are being used */ 
    body { padding: 0; margin: 0; overflow: hidden; } 
    iframe { position: absolute; top: 0; right: 0; bottom: 0; left: 0; overflow: auto; } 
    </style> 
    </head> 
    <body> 
    <iframe src="" id="course-content" frameborder="0"></iframe> 
    <script> 

    //Place initialization routine here. 
    //Connect to SCORM API, run API.LMSInitialize() 
    var SCORM_API = window.API; //shortcut reference 

    function setScore(score){ 
     SCORM_API.LMSSetValue("cmi.core.score.raw", score); 
    } 

    function setStatus(status){ 
     SCORM_API.LMSSetValue("cmi.core.lesson_status", status); 
    } 

    function endCourse(){ 
     SCORM_API.LMSCommit();//Save, just in case 
     SCORM_API.LMSFinish();//Close API connection 
    } 

    SCORM_API.LMSInitialize(); 

    //Load child frame once SCORM_API is ready 
    document.getElementById("course-content").setAttribute("src", "content.html"); 

    </script> 
    </body> 
</html> 

content.html (cadre enfant)

<!doctype html> 
<html> 
    <head> 
    <meta charset="utf-8" /> 
    <title>Course Content</title> 
    </head> 
    <body> 
    <p>This is the content of the course. Add scripts to make it do something.</p> 
    <script> 
    //Place course functionality here, such as setting a bookmark or score. 
    //'parent' is the parent frame. 
    //This is a very arbitrary example of what you can do when a course loads 
    parent.setScore("100"); 
    parent.setStatus("completed"); 
    parent.endCourse(); 
    </script> 
    </body> 
</html> 

typiquement, vous souhaitez utiliser un emballage SCORM pour gérer une partie de la soulever des charges lourdes, et que vous souhaitez utiliser un abstraction layer pour améliorer le code maintenabilité et CE ntralisez vos commandes SCORM dans le cadre parent. La fonction endCourse() est un exemple très simple d'une couche d'abstraction. Au lieu d'appeler l'API directement dans le cadre enfant, vous appelez une fonction.