38
Sample listing 10.5 – HTML and JavaScript: Get and display data for more than one objective 
<html><!-- saved as file "endpage.htm" --> 
<head><title>---</title></head> 
<body> 
<p>Summary of how you did on objectives:</p> 
<script type="text/javascript" language="JavaScript"> 
var s = "";  
var stat = ""; 
// Get the status for one objective, and turn it 
// into some text to display 
var objectiveID = "myUniqueObjectiveName001"; 
stat = window.parent.SCOGetObjectiveData(objectiveID, "status"); 
if (stat != "completed") stat="not completed"; 
s += '<p>Status for objective A: ' + stat + '</p>'; 
// Get the status for the other objective 
// and append that to the text to display 
objectiveID = "myUniqueObjectiveName002"; 
stat = window.parent.SCOGetObjectiveData(objectiveID, "status"); 
if (stat != "completed") stat="not completed"; 
s += '<p>Status for objective B: ' + stat + '</p>'; 
document.write(s) 
</script> 
</body> 
</html> 
COOKING UP A SCORM V.1.2 
COPYRIGHT © 2003  
Convert pdf to ppt online - C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
convert pdf to editable ppt; convert pdf to ppt online without email
Convert pdf to ppt online - VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
pdf conversion to powerpoint; how to convert pdf to powerpoint on
39
Chapter 11 - 
Displaying a SCO in full screen mode 
A SCO may not assume that it will run in a top-level window, or attempt to force itself to run 
into a top-level window. It must be designed so as to be compatible with being launched in a 
frame. However, there are some situations where it is desirable for a SCO to run full-screen. 
Certain types of content, such as a game, might work best as a full-screen experience.  
Since the SCO may be launched by the runtime service in a frame, the only way to provide a 
full-screen experience is for the SCO to open a full-screen window. Nothing in the SCORM 
specification prevents a SCO from opening such a dependent popup window, but this can be 
risky. In any case, the SCO cannot leave such a window open after it terminates, even if the 
termination is abnormal. Also, experience has shown that users can get very confused if they 
inadvertently activate another window. 
This example shows a way to handle this problem in a reasonably robust way. It is a full-
screen version of the example in Chapter 10 -Tracking objectives within.  
There are many ways to do this. In this case, since most of the required scripts are already 
available, part of the solution is to run a SCO within a SCO, as shown in Figure 11.1.  
Full screen windowcreated by the 
"Master" SCO 
Stage window provided by the RTS 
"Master" SCO 
API Adapterprovided by 
the "Master" SCO 
API Adapter provided by the RTS
"Slave" SCO 
Client side browser environment
Figure 11.1 – Launching a slave SCO in a full-screen window 
The actual SCO that is launched by the runtime service—let us call it the "master" SCO—acts 
as a mini runtime service for another SCO—let us call this one the "slave" SCO. The "master" 
SCO launches the "slave" SCO in a window it creates. When the "slave" SCO is launched, it 
seeks and finds an API adapter, which is actually part of the "master" SCO. This API adapter 
that is instantiated by the "master" SCO intercepts API calls from the "slave" SCO. Most of 
those calls just get forwarded to the "real" API adapter that is provided by the runtime service. 
Because the "master" SCO does initialization and finish in its own way, when the "slave" SCO 
calls 
LMSInitialize
and 
LMSFinish
the fake API adapter just returns "
true
" but does 
nothing.  
The SCORM rules do not allow a SCO to link to another SCO, or to go to another SCO within 
the same window. In this case, however, the rules are not violated because the "slave" SCO 
does not replace the SCO launched by the runtime service, but is launched in a window that is 
"owned" by that SCO. In fact, the runtime service does not even know that the "slave" SCO 
exists, because the only SCO it sees running is the "master" SCO. And the "slave" SCO sees 
only the runtime service provided by the "master" SCO and is totally unaware of another 
runtime service beyond the "master" SCO. 
User interface considerations 
When the browser opens a full-screen window, it does not provide any means of closing that 
window; the browser's page stage fills the entire screen. Therefore you must provide a way to 
close the window, otherwise the user is "stuck" in that full-screen window. The example shown 
here just adds an "Exit" command on the end page. Clicking Exit actually closes the window. 
The user may also use Alt+F4 to close the window, but that is rather inelegant. A more 
elaborate example might use a different method. Note that, if the "master" SCO is unloaded for 
any reason, its script will ensure that the full screen window is closed automatically.  
COOKING UP A SCORM V.1.2 
COPYRIGHT © 2003  
Online Convert PowerPoint to PDF file. Best free online export
Online Powerpoint to PDF Converter. Download Free Trial. Convert a PPTX/PPT File to PDF. Just upload your file by clicking on the blue
convert pdf to powerpoint online; how to change pdf to powerpoint slides
How to C#: Convert PDF, Excel, PPT to Word
How to C#: Convert PDF, Excel, PPT to Word. Online C# Tutorial for Converting PDF, MS-Excel, MS-PPT to Word. PDF, MS-Excel, MS-PPT to Word Conversion Overview.
export pdf into powerpoint; how to convert pdf slides to powerpoint
40
There is also the problem of window activation. In the Windows environment, for example, you 
cannot prevent the user from using Alt+Tab to activate another window. Also, you cannot 
prevent the user from closing the full-screen window by using Alt+F4. The script in this 
example uses a function triggered by a recurring timer to watch over the full-screen window. 
This ensures that a relevant prompt is always displayed in the "master" SCO's stage window. 
SCO structure 
This SCO uses two framesets. The main frameset is the "master" SCO which displays an 
empty page that gets updated dynamically. The second frameset and the associated pages 
make up the "slave" SCO. The second frameset will be displayed in a separate, full-screen 
window when the first frameset is launched in the runtime service's stage window. 
Frameset ("Slave" SCO) 
Stage frame 
Frameset ("Master" SCO) 
Stage frame 
Prompt page
(updated depending on 
status of slave window) 
Load page 
(page 0) 
Page 1 
Page 2 
Action to 
satisfy 
Objective A
Page 3 
Actions to 
satisfy 
Objectives 
A and B 
End page 
Figure 11.2 – Pages in a SCO that keeps track of some individual objectives 
The main frameset—the "master" SCO—is shown in Sample listing 11.1. The prompt page 
used by the "master" SCO to inform the user is in Sample listing 11.2.  
All the pages that make up the "slave" SCO are exactly identical to those in Chapter 10 -
Tracking objectives within, and will not be repeated here. There is one exception: The end 
page, which is shown in Sample listing 11.2, is modified from that previous example because it 
must contain a user interface device to close the full-screen window. 
Sample listing 11.1 – The "master" SCO 
<html> 
<head> 
<script src="SCORMGenericLogic.js" type="text/javascript" language="JavaScript"> 
</script> 
<script type="text/javascript" language="JavaScript"> 
// If all goes well this local object named API will become the 
// SCORM API adapter found and used by the "slave" SCO 
var API = null; 
function dummyInitialize(){ return "true" } 
function dummyFinish(){ return "true"} 
// This part of the script ensures that the user knows 
// what's going on in 3 different states: 
COOKING UP A SCORM V.1.2 
COPYRIGHT © 2003  
How to C#: Convert Word, Excel and PPT to PDF
How to C#: Convert Word, Excel and PPT to PDF. Online C# Tutorial for Converting MS Office Word, Excel and PowerPoint to PDF. MS Office
add pdf to powerpoint slide; convert pdf to ppt online
C# PDF Convert: How to Convert MS PPT to Adobe PDF Document
C# PDF Convert: How to Convert MS PPT to Adobe PDF Document. Provide Free Demo Code for PDF Conversion from Microsoft PowerPoint in C# Program.
converting pdf to powerpoint; conversion of pdf to ppt online
41
// (1) while the SCO is creating the full frame popup window 
// (2) while the full frame window is displayed, in case the 
//     user inadvertently activates another window 
// (3) after the full frame window closes. 
// It uses a timer to control the display of a prompt in the "main" 
// window. 
var zPopupStageTimerID = null; 
var zbOtherWindowPromptShown = false; 
function DisplayPrompt() { 
var s = '<html><head>'; 
s += '<style type="text/css">body {background-color: silver; color: blue;'; 
s += 'font-size: small;font-family: Verdana, Arial, Helvetica, Sans-Serif}'; 
s += '</style></head><body><h3>%s</h3><p>%s</p>'; 
s += '</body></html>'; 
var re = /%s/ 
for (i=0; i < DisplayPrompt.arguments.length; i++){ 
s = s.replace(re,DisplayPrompt.arguments[i]); 
frameMyStage.location.href = "dummypage.htm"; 
frameMyStage.document.open(); 
frameMyStage.document.write(s); 
frameMyStage.document.close() 
function PopupStageFocus() { 
if ((zwndSlave) && (!zwndSlave.closed)) { 
zwndSlave.focus() 
function PopupStageFocusTimer() { 
// called by timer while a popup stage is open 
if ((zwndSlave) && (!zwndSlave.closed)){ 
if (!zbOtherWindowPromptShown){ 
DisplayPrompt('This content was launched in another window.', 
'Click <a href="javaScript:window.parent.PopupStageFocus()">'+ 
'here</a> to reactivate it.'); 
zbOtherWindowPromptShown = true; 
} else { 
KillStageFocusTimer(); 
frameMyStage.location.href = "dummypage.htm" 
if (zbOtherWindowPromptShown){ 
DisplayPrompt("Finished", 
"The full screen content window is now closed.")  
zbOtherWindowPromptShown = true; 
zbOtherWindowPromptShown = false; 
function StartStageFocusTimer() { 
if (zPopupStageTimerID!= null) {  
clearInterval(zPopupStageTimerID)  
zbOtherWindowPromptShown = false; 
zPopupStageTimerID= setInterval("PopupStageFocusTimer()", 500); 
function KillStageFocusTimer() { 
if (zPopupStageTimerID != null) clearInterval(zPopupStageTimerID);  
COOKING UP A SCORM V.1.2 
COPYRIGHT © 2003  
C# TIFF: Learn to Convert MS Word, Excel, and PPT to TIFF Image
PPTXDocument doc = new PPTXDocument(@"demo.pptx"); if (null == doc) throw new Exception("Fail to load PowerPoint Document"); // Convert PPT to Tiff.
how to convert pdf to powerpoint in; pdf page to powerpoint
VB.NET PowerPoint: Process & Manipulate PPT (.pptx) Slide(s)
This VB.NET online tutorial page can help you processing control add-on can do PPT creating, loading powerful & profession imaging controls, PDF document, image
images from pdf to powerpoint; how to convert pdf into powerpoint on
42
// The actual work begins here 
function init() { 
DisplayPrompt("One moment, please...","Preparing a window..."); 
SCOInitialize(); 
if (APIOK()){ 
API = new Object(); 
// We are handling overall SCO initialize and finish in this script 
// Make the methods called by the slave no-ops  
API.LMSInitialize = dummyInitialize; 
API.LMSFinish = dummyFinish; 
// Add the functions instantiated by the generic script to this API adapter 
API.LMSSetValue = zobjAPI.LMSSetValue; 
API.LMSGetValue = zobjAPI.LMSGetValue; 
API.LMSCommit = zobjAPI.LMSCommit; 
API.LMSGetLastError = zobjAPI.LMSGetLastError; 
API.LMSGetErrorString = zobjAPI.LMSGetErrorString; 
API.LMSGetDiagnostic = zobjAPI.LMSGetDiagnostic; 
// Now launch the actual content in full screen window 
var url = "frameset.htm" ; // Note: could be read from a parameter. 
// Open window with a blank page because it may take a long 
// time to load the actual content; psychologically it is 
// better to see the window come up as fast as possible. 
zwndSlave = window.open("dummypage.htm","SCOFullScreenStage","fullscreen=yes"); 
zwndSlave.location.href = url; 
zwndSlave.focus(); 
StartStageFocusTimer()  
function SCOSaveData(){ 
KillStageFocusTimer(); 
// Make sure that the slave window is not left behind 
if ((zwndSlave) && (!zwndSlave.closed)) { 
zwndSlave.close() 
</script> 
<title>Sample Full Screen SCO</title> 
</head> 
<frameset rows="100%,*" border="0" 
onload="init()"  
onunload="SCOFinish()"  
onbeforeunload="SCOFinish()"> 
<frame name="frameMyStage" title="Explanation" src="loadpromptpage.htm" /> 
<frame src="dummypage.htm" /> 
</frameset> 
</html> 
COOKING UP A SCORM V.1.2 
COPYRIGHT © 2003  
VB.NET PowerPoint: Convert & Render PPT into PDF Document
VB.NET PowerPoint - Render PPT to PDF in VB.NET. How to Convert PowerPoint Slide to PDF Using VB.NET Code in .NET. Visual C#. VB.NET. Home > .NET Imaging SDK >
image from pdf to powerpoint; how to change pdf to ppt on
VB.NET PowerPoint: Read & Scan Barcode Image from PPT Slide
VB.NET PPT PDF-417 barcode scanning SDK to detect PDF-417 barcode image from PowerPoint slide. VB.NET APIs to detect and decode
convert pdf slides to powerpoint; drag and drop pdf into powerpoint
43
Sample listing 11.2 – Initial prompt page displayed while the full-screen window is opening 
<html><!-- saved as file "loadpromptpage.htm" --> 
<head> 
<style type="text/css"> 
body {background-color: silver;  
color: blue; 
font-size: small; 
font-family: Verdana, Arial, Helvetica, Sans-Serif} 
</style> 
<title></title> 
</head> 
<body> 
<h3>One moment, please...</h3> 
<p>Preparing a window...</p> 
</body> 
</html> 
Sample listing 11.3 – End page with a user-interface device to close the full-screen window 
<html><!-- saved as file "endpage.htm" --> 
<head><title>---</title></head> 
<body> 
<script type="text/javascript" language="JavaScript"> 
var s = "<p>Status: ";  
var stat = ""; 
// Get the status for the SCO 
stat = window.parent.SCOGetValue("cmi.core.lesson_status"); 
switch(stat) { 
case "": s += window.parent.SCOGetDiagnostics("");break; 
case "completed": s += "completed (you visited every navigable page)";break; 
default: s += stat 
s += "</p><p>Summary of how you did on objectives:</p>" 
// Get the status for one objective, and turn it 
// into some text to display 
var objectiveID = "myUniqueObjectiveName001"; 
stat = window.parent.SCOGetObjectiveData(objectiveID, "status"); 
if (stat != "completed") stat="not completed"; 
s += '<p>Status for objective A: ' + stat + '</p>'; 
// Get the status for the other objective 
// and append that to the text to display 
objectiveID = "myUniqueObjectiveName002"; 
stat = window.parent.SCOGetObjectiveData(objectiveID, "status"); 
if (stat != "completed") stat="not completed"; 
s += '<p>Status for objective B: ' + stat + '</p>'; 
document.write(s) 
</script> 
<p><a href="JavaScript:window.parent.close()">Exit</a></p> 
</body> 
</html> 
COOKING UP A SCORM V.1.2 
COPYRIGHT © 2003  
44
Chapter 12 - 
Packaging SCORM-compliant content 
Having built some SCOs, it would be nice to see them in action in a real delivery environment. 
SCORM specifies how to package your SCOs so that they can be aggregated, stored, copied, 
moved, archived, uploaded and eventually delivered to a user by any SCORM-compliant 
management system. A package may contain one SCO, or many SCOs. 
IMS & SCORM content organization model 
The IMS Global Learning Consortium (www.imsglobal.org) has developed a packaging 
specification for learning content that provides a useful blueprint to generic content 
organization in the form of a manifest included with the package. The manifest is used to 
inventory the content of the package, but also to describe it through metadata. The manifest 
may also be used to show how the content is organized. SCORM 1.2 content packaging is 
based on the IMS specification. 
An IMS packaging manifest is an XML document that contains several parts: 
‰ 
Metadata that describe the package.  
‰ 
Organizations: Zero, one or more structural maps that describe how the content is 
organized. Each item in such a map can reference a resource in the package. For 
SCORM content for delivery to an end user, the manifest must contain at least one 
organization. 
‰ 
Resources, which specify actual chunks of content that can be used. More than one 
organization item can reference the same resource. A resource can also have its own 
metadata. A SCO is typically described by a resource. 
‰ 
Sub-manifests (nested manifests), which describe a subset of the content in a package. A 
sub-manifest can have its own metadata, organizations and resources. 
Package 
Manifest 
Organizations 
Table of Contents 
Some other 
organization 
+  
+  
+  
+  
+  
+  
+  
+  
Ove rv iew 
Summ ary 
Pre -As se ssm ent 
Pos t-Ass es smen t 
RIO 
RIO 
RIO 
RIO 
RIO 
RIO 
RIO 
RLO 
Introd uc tio n 
Imp ortan ce 
Objec tiv es 
Prereq uisites 
Sce nario 
Outlin e 
+  
+  
Con ten t Items 
Practice  Item m s 
Ass ess me nt Items  
RL O 
RL O 
Meta-data 
Resources 
Packaged learning assets (files) 
External  
assets & 
services 
etc. 
Sub (nested) manifests 
+
Overview
Pre
-
Assessment
RIO
RLO
In troductio n
Importance
Objectives
Prerequisites
Scenario
Outline
+
Content Items
P ractice Items
+
Overview
P re
-
Assessment
RIO
RLO
Introdu ction
Imp ortance
Objectives
P rerequis ites
Scenario
Outline
+
Content Items
Practice Items
Figure 12.1 – The IMS Content Packaging model 
For example, if you were to display an organization as a table of contents, by selecting an item 
in the table of contents you could launch or open the corresponding resource. 
Instead of an atomic resource, an item in an organization may reference a sub-manifest, and 
thus an entire other organization. This can be very useful if the same organized "chunks" of 
content are used in more than one place in a course, for example. This also makes the 
packaging of organizations in the shape of a directed graph more convenient. Because they 
are self-contained and can have metadata, sub-manifests can also be useful as a way to 
identify the parts of a package that can be extracted and reused in another context. 
COOKING UP A SCORM V.1.2 
COPYRIGHT © 2003  
45
This packaging model is the foundation for the SCORM 1.2 content structure and organization. 
SCORM 1.2 extends the package definition by specifying additional data elements. In the XML 
document, those extensions are identified by the namespace prefix adlcp
Where to put the metadata  
SCORM requires metadata for the package. You put this metadata at the top level of the 
manifest. SCORM also adds the option to reference a separate metadata file included in the 
package. To conform to SCORM 1.2, you may either include the metadata in the manifest 
directly, or use the SCORM-defined extension to reference an external metadata file. You 
cannot do both, i.e. you may not have both inline metadata in the manifest and a reference to a 
metadata file. SCORM also allows additional metadata as defined by the IMS schema. 
To create a SCORM package 
Create an XML manifest. This is an XML file with a header as specified in SCORM 1.2. 
‰ 
Add a resources section and describe each learning object (SCO) as a resource element 
in the resources section.  
‰ 
Unless you are referencing external resources, identify all the files that are needed for 
each learning object as file elements in each resource
‰ 
If several learning objects use the same files (for example, the same graphic), consider 
using the dependency element, and making that element reference a common resource 
that is a collection of assets, rather than repeating the lists of files several times. 
‰ 
Add an organizations section above the resources section. 
‰ 
Create one or more organization trees that contain item elements that reference the 
resources. 
‰ 
Add a metadata section above the organizations section. 
‰ 
Add metadata elements as specified in SCORM 1.2 to describe the package and its 
content. 
Create a zip file that contains the manifest, the XML control files (XSD, etc.) and all the files 
included in the package. You can use subdirectories, but the manifest must be in the base 
directory of the directory tree. See the IMS Content Packaging Best Practices guide for 
instructions. SCORM conformance and interoperability requires that you include the XSD files 
specified in SCORM 1.2. Those are not the most recent XSDs posted on the IMS Web site.  
Content paths and directories 
When the SCORM content you created is installed in an LMS or repository, it will probably not 
end up in the same directory as on your development system, or have the same access rights 
associated with it. Therefore you must follow these rules in the organization of any internal 
links in your Web content: 
‰ 
All files used, linked or referenced by any web content in the package must be in a 
directory that is either the base directory of the package, or a descendant of that directory.    
‰ 
All references must be relative. You may not hard wire paths relative to either the disk root 
directory or a specific disk drive or volume. For example, the values of href and src 
attributes in HTML files may not begin with a "/" (forward slash), or specify a relative path 
that goes further toward the root than the base directory of the package. 
SCORM 1.2 defines the metadata element Location as mandatory. However, since a package 
can be moved from system to system, the only value that makes sense for that element is ".", 
meaning "wherever this metadata happens to be." 
Organizing SCOS 
You can associate a SCO with any item in the organization tree. Note however that the Simple 
Sequencing model for SCORM 1.3 will probably allow SCOs only for leaf nodes in the tree. 
COOKING UP A SCORM V.1.2 
COPYRIGHT © 2003  
46
Appendix: Miscellaneous resources and implementation notes 
Sequence diagram 
: LMS (server side)
: RTS (client side)
: Browser "stage" window
: RTS Navig. UI
: SCO
The RTS opens the SCO in a stage window
Network
(value)
LMSGetValue(...)
SCO calls LMSInitialize (usually triggered by
onload event)
SCO calls LMSGetValue one or more time
throughout its execution. Depending on LMS
implementation, client returns value from
local store or calls into server side.
(value)
GetValue(...)
(true)
LMSSetValue(...)
(true
SetValue(...)
SCO calls LMSSetValue one or more time
throughout its execution. Depending on
implementation, client side RTS caches the
value or forwards the Setvalue call
(true)
LMSCommit()
(true
Commit()
SCO calls LMSCommit one or more time
throughout its execution. Depending on
implementation, client side RTS caches the
values or forwards all unsaved data to the
LMS in a private commit process.
(true)
LMSFinish()
(true
Finish()
SCO calls LMSFinish once when it
determines that is has finished execution.
Depending on implementation, client side
RTS manages the event or or forwards all
unsaved data to the LMS in a private
commit and finish process.
Some navigation event in the client side
RTS navigation user interface is going to
force unloading of the SCO by closing the
stage window or loading another SCO.
Note: The implementation of the LMS and
RTS (a.k.a. API adapter) can vary and is
included in diagram only to indicate possible
latency and other dependencies. 
The RTS opens another SCO in the stage
window, thus forcing the current SCO to
unload.
SCO calls LMSInitialize (usually triggered by
onload event)
unLoad event
Result
Eval?
GetNextSCO
(URL,  Params)
(URL,
parameters)
Unload
onLoad event
(true)
LMSInitialize()
Etc. until the next RTS navigation event.
etc...
Load
Learner
User clicks TOC
But first the RTS must determine which SCO
to launch next.This may require querying the
LMS. If no valid SCO to go to, navigation is
canceled at this point.
(URL, parameters)
Load
onLoad event
LMSInitialize()
(true)
Figure 12.2 – SCO execution sequence with no surprises 
COOKING UP A SCORM V.1.2 
COPYRIGHT © 2003  
47
Figure 12.2uses a flavor of UML to represent the life cycle of a SCO launched by a runtime 
service. This example is probably a rare one. It assumes that the SCO finishes normally 
(whatever that means to the author of that SCO) and reports all its data to the LMS before the 
user thinks of going to another SCO. In reality, a SCO may be forcibly unloaded at any time, as 
shown in Figure 12.3. Note: RTS stands for "Runtime service". 
Navigation event handler
: LMS (server side)
: RTS (client side)
: Browser "stage" window
: RTS Navig. UI
: SCO
(true
Finish()
unLoad
browser event
(true)
LMSFinish()
(true)
LMSSetValue(...)
(true
SetValue(...)
Learner
User chooses
another SCO
(SCO URL,
parameters)
Load
onLoad event
LMSInitialize()
(true)
(URL of
other SCO)
Unload
Load
The RTS opens the SCO in a stage window
SCO calls LMSInitialize (usually triggered by
onload event)
SCO calls LMSFinish once when it
determines that there is nothing else to save
Depending on implementation, client side
RTS manages the event or or forwards all
unsaved data to the LMS in a private commit
and finish process.
Some navigation event in the client side
RTS navigation user interface forces
unloading of the SCO by closing the stage
window or loading another SCO.
Note: The implementation of the LMS and
RTS (a.k.a. API adapter) can vary and is
included in diagram only to identify possible
latency issues and other dependencies.
The browser prepares to load an other page
in the stage window and and calls the
onunload 
handler in the SCO.
SCO calls LMSSetValue one or more time to
save any unsave data. Depending on
implementation, client side RTS caches the
value or forwards the Setvalue call
The onunload handler complete, the
browser finishes unloading the SCO and
loads the next SCO
The next SCO begins to execute,
etc.
Based on available data, the RTS
determines whether the destination SCO is
valid. 
SCO calls LMSGetValue, LMSSetValue,
and/or LMSCommit while executing
(not illustrated)
onLoad event
(true)
LMSInitialize()
OK to Proceed
The next SCO
continues to run
Figure 12.3 – SCO execution sequence with forced unloading of the SCO 
COOKING UP A SCORM V.1.2 
COPYRIGHT © 2003  
Documents you may be interested
Documents you may be interested