This question comes up several times a month. From time to time, when you launch a piece of content, you may see a message box like this:
In order for communication to occur between the LMS and content, the LMS is obligated to provide an API. When you launch a piece of content, the first thing the content has to do is look for that API, in order to establish communication with the LMS. In some cases, that piece of content has what we call a ‘poor API discovery algorithm’. While this can mean many things, it often means that the content will just search the frames in the current window for the API and if it does not find it, it will just quit and throw that error. There are a few ways around this.
1. Instead of having the content launch in a new window, launch it in the frameset. This way, we know that the content is in the same window as the API. In many cases, this eliminates the discovery problem.
2. If the content needs to be launched in a new window, you could re-code the API discovery algorithm to not only look in the current window, but look at its parent window and keep searching parent windows until it finds it (as the specification requires!) For more detailed code level information on this option, check out this article.
Since this is a pretty common mistake, we created a package property to help combat the behavior for our SCORM Engine users. Package Properties control how the SCORM Engine delivers a particular piece of content. You can specify how the content is launched, the navigation options available to the user, and the behavior and appearance of the content being delivered. SCORM Engine Package Properties can be controlled in a number of ways. Each implementation has defaults, some have an exposed UI, and others simply offer this control via imsmanifest extensions. (Controlling package properties via the manifest extensions is a post for another time.)
If you have any questions about how this works, please feel free to contact me at 615-550-9530 or you can email me with any questions at email@example.com