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:
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:
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:
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:
document.write lines towards the bottom of the file: alert(g_objAPI);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:
var g_intAPIOrder = 0;var g_intAPIOrder = 1;If the API still cannot be found, contact your LMS vendor for the functions necessary to find their SCORM API.
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.
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.
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.
Here are some general notes about SCORM integration with LMSs:
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:
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.