2008년 9월 1일 월요일

SCORM API


function findAPI( win )
{
   while ( (win.API_1484_11 == null) &&
           (win.parent != null) &&
           (win.parent != win) )
   {
      findAPITries++;

      if ( findAPITries > 500 )
      {
         alert!( "Error finding API -- too deeply nested." );
         return null;
      }

      win = win.parent;
   }

   return win.API_1484_11;
}


위의 소스는 scorm 컨텐츠안에 들어 있는 js 파일의 필수 펑션이다. 이 펑션에서 보다시피 학습창에서 API_1484_11 이름의 object 를 찾는다. 이 오브젝트는 js 로 만들수도 있고 클래스로 만들수도 있고 다양하다.


그럼 학습창 프로그램은 어떻게 해야 하는가?


<script>

    // Constants
    SCORM_2004 = "V1p3";
    SCORM_12 = "V1p2";

    // FrameMgr is called from all frames
    var g_frameMgr = new FramesetManager;

    var g_scormVersion = "<%=ScormVersionHtml %>"; // Version of current session

    var API_1484_11 = null; // Name of RTE object for 2004 -- name is determined by SCORM.
    var API = null; // Name of RTE object for 1.2 -- name is determined by SCORM

    // Internal RTE object -- it's the same object as the api objects, just easier to reference.
    var g_API = g_frameMgr.GetRteApi(g_scormVersion, <%=RteRequired %>); 

    if (g_scormVersion == SCORM_2004)
    {
        API_1484_11 = g_API;
    }
    else
    {
        API  = g_API;
    }
    </script>


댓글 없음:

댓글 쓰기