Accessibility

Table of Contents

Output Options in Captivate – Part 3: SCORM Tracking

SCORM Issues in Captivate

The SCORM standard has always required content to reside on the same server or domain as the LMS. The issues in getting Captivate content to work with your SCORM-compliant LMS typically involve the following:

Finding the SCORM API

There are at least two different ways to find the SCORM API. You can start with the current window and work your way up the parent chain until you find a window with the SCORM API; or you can start at the top window and work your way down the children windows until you find the SCORM API.

Previous versions of RoboDemo content used a single method to find the SCORM API. The JavaScript functions that performed this job either worked, or didn't work. Captivate improves this process because the HTML wrapper file that is generated when publishing for SCORM allows you easily to modify the way the SCORM API is found—or at least it allows you to go from the bottom-up or the top-down, as these two methods seem to capture finding the SCORM API with a bulk of the LMSs on the market. If Captivate content doesn't seem to communicate with your SCORM-compliant LMS, test to make sure the SCORM API is found and then modify the HTML wrapper to change the way the API is found to see if that helps with your LMS.

The HTML wrapper sets several JavaScript variables that represent the SCORM API, the version of the API, and ActionScript mechanism that is used to communicate with the API. These variables include the following:

  • g_objAPI: A reference to the SCORM API object, used to actually communicate with the LMS
  • g_intAPIOrder: Order for finding the API (0 = bottom-up; 1 = top-down)
  • g_zAPIVersion: SCORM Version (0.2 = SCORM 1.2; other = SCORM 2004)
  • g_intAPIType: Type of mechanism used by ActionScript to communicate to JavaScript and receive responses back (0 = fscommand; 1 = getURL)
  • strURLParams: Parameters attached to the URL of the embedded SWF to send these variables to the Captivate file

Some of these variables are passed to the Captivate file, so it knows how to communicate to the LMS. If the SCORM API isn't found, the g_objAPI is null or undefined. This can happen if the JavaScript functions were unable to find the API because of the following:

  • Content was not launched by an LMS
  • API was not found because the API is in a different window or requires a different mechanism for finding the API
  • API was not loaded before a timer in the JavaScript code expired

If communication with your SCORM-compliant LMS doesn't work, you might want to determine if the API could be found. To test whether the SCORM API has been found:

  1. In a text editor, edit the HTM file that was generated by the publish process.
  2. Add the following line before any of the document.write lines towards the bottom of the file: alert(g_objAPI);
  3. This should display an alert message box when you launch the file from your SCORM-compliant LMS.

If the SCORM API cannot be found, change the default value of the API order variable (g_intAPIOrder) so that it tries to find the API from the top-down. To change the order for finding the API:

  1. Edit the HTM file that was generated by the publish process.
  2. Find the line that contains the initialization reference to the variable g_intAPIOrder—by default the line/value is var g_intAPIOrder = 0;
  3. Change the value so that it reads: var g_intAPIOrder = 1;

If the API still cannot be found, contact your LMS vendor for the functions necessary to find their SCORM API.

Supporting Two-Way Communication in Your Environment

In addition to finding the SCORM API, Captivate needs to communicate to the LMS and receive responses from it so that Captivate knows the LMS is initialized and can communicate properly with the SCORM-compliant LMS. If the API isn't found or the LMS is not initialized, tracking data is not sent to the SCORM-compliant LMS. In addition, there are a number of calls to the LMS that require the Captivate file to be updated before the next command is sent.

Closing the Captivate Browser Window

Captivate is capable of automatically closing the browser window, or at least closing the browser window after displaying a JavaScript alert dialog box that asks the user to confirm the close of the window. However, the call to close the browser window only works when the Captivate content is launched in a new browser window, not when it resides inside a frameset. If your LMS launches content inside a frameset, or you created and explicitly launched Captivate content in a frameset, the browser window won't be closed. This is especially noticed when you follow the recommendation to display the "toolbar" and ask users to click the "X" (or exit) button in the toolbar, before exiting the course; or if you have any of the options to close the Captivate file at the end.

To close the browser window, you need to add a window.close function to the HTM file that was generated when you published your Captivate file. The best way to handle this is to add the following (or similar) code to the <body> tag of the published HTM file:

if(window.parent!=window)
{
   window.close = function()
   {
      window.parent.close();
   }
}

This code assumes that the content is launched in a basic frameset. It also assumes that the parent frameset isn't something that needs to remain open. For example, some LMSs open content in a child frame. If you use the code above, the LMS is also closed if the parent frameset contains the LMS application. If your frameset is more complicated, you can either explicitly indicate the window to close (for example, window.top.close();) or you can navigate through the window tree and find the appropriate window to close.

Other LMS or Browser-Specific Issues

This section attempts to outline some issues that were noticed with specific browsers and LMSs. Anything that is listed here is not necessarily answered nor supported but is provided for your convenience.

Metadata and Manifest

  • Saba LMS: Requires that the XML elements <maxtimeallowed>, <datafromlms>, and <masterscore> that are left empty in the manifest of the default course configuration from Captivate either be filled or removed in order to load the course.
  • Oracle LMS: Requires that the appropriate XSD documents be included in the package and that the Oracle-specific XSD file ila_mdextensions.xsd be included as well. This Oracle-specific XSD file is available from your LMS administrator or Oracle representative.

Launching Captivate Content

  • A number of LMSs require the SCORM API search order to be reversed (changed to top-down). If your LMS doesn't track, read the section on "Finding the SCORM API" and follow the directions to change the order of finding the API.

General LMS Information

Here are some general notes about SCORM integration with LMSs:

  • If clicking the Exit button in the Captivate toolbar doesn't close the browser window, it's probably because the LMS launched the Captivate content in a frameset. Although this is expected behavior, it is still recommended that the students click the Exit button in the Captivate content before closing the browser window or otherwise exiting the content. See the section on "Closing the Browser Window" for more information on how to modify the Captivate-published HTM file to close a parent browser window.
  • Captivate sends tracking data during periods of inactivity and approximately every two minutes. This may keep the student's LMS session alive, even if they are not at their computer and never closed the content or logged out of the LMS.
  • After Captivate was released, two issues were reported about the manifest files that are created when publishing for SCORM. These issues may require you to update the template files which generate the manifest files at publish time. The first issue is with file references that are missing from the manifest files (more information can be found about this below). The second issue has to do with the SCORM 2004 template and is resolved only by updating the SCORM 2004 manifest template file.

    File references in the manifest for SCOs should include all files that are used by the SCO. The manifest files for Captivate are missing references to files in the SCORM_support folder. You can make these changes manually or use updated template files available in the sample files.

    To make these changes manually, add the following references to the bottom of the manifest.xml and manifest2004.xml template files, where Captivate has been installed (typically C:\Program Files\Macromedia\Captivate\Templates\Publish\):

    <file href="SCORM_support/scorm_support.htm"/>
    <file href="SCORM_support/scorm_support.js"/>
    <file href="SCORM_support/scorm_support.swf"/>

    Add these references below the existing references:

    <file href="@RD_MQZ_MANIFEST_SWF_NAME"/>
    <file href="@RD_MQZ_MANIFEST_HTM_NAME"/>

    Updated manifest files for SCORM 1.2 and SCORM 2004 are available as part of the sample files. You can simply copy these files instead of making any changes manually. To use these updated template files:

    1. Download the SCORM sample file.
    2. Extract (unzip) the file.
    3. Copy the manifest.xml and manifest2004.xml files from the Publishing Template folder where you extracted the files to where Captivate is installed, replacing the existing template files (though you might want to back up the existing files first). Typically this folder is C:\Program Files\Macromedia\Captivate\Templates\Publish\.
    4. Publish the content for SCORM 2004.

Where to Go from Here

Captivate is a great tool for capturing and building interactive training demonstrations and simulations. It makes it easy for you to integrate with SCORM-compliant LMSs and provides you with a number of customization options.

For additional information and articles on Captivate and LMS tracking or tools integration, stay tuned to the Captivate Developer Center.