Forum Discussion
Storyline / SCORM: How can I check whether the cmi.suspend_data limit has been exceeded?
- 25 days ago
SafeTeamAcademy wrote:
My question is: How can I check the amount of data stored in cmi.suspend_data for a Storyline course?
You can check the amount of data stored in cmi.suspend_data by adding a JavaScript snippet to your Storyline course and passing the result into a custom Storyline variable for display anywhere you want.
You can also log the suspend data and its length in the browser console using Developer Tools. As JudyNollet mentioned, the data itself is not human-readable because Storyline serializes and compresses bookmarking, variables, learner progress etc., into an encoded string.
However, you can measure its size using .length and display that value in Storyline. This is useful for monitoring how close you are to the SCORM 1.2 suspend data limit (~4096 characters). Once exceeded, bookmarking and resume functionality may stop working correctly. This is much less of an issue in SCORM 2004, which supports a significantly larger suspend data size.
In the example demo below, the course is published to SCORM 1.2. The JavaScript successfully detects the SCORM version and continuously retrieves the current cmi.suspend_data value and its length as the learner progresses through the course.
Hello Nedim,
Thank you very much for your detailed explanation.
This is exactly what I was looking for. The JavaScript approach seems very useful, especially for monitoring the current cmi.suspend_data length directly in Storyline.
Would you be able to share your Storyline project file that contains this slide and the custom variable setup? It would really help me understand how you implemented. This would also help me take the same measurements on my side and check the suspend data size in my own module.
Thanks again for your help!
Sure. Find the attached .story file. In the Slide Master, you'll find several Execute JavaScript triggers containing the scripts. Disable one or another.
The first script is generally safe because it uses the official SCORM API discovery method defined by the SCORM standards rather than relying on Storyline-specific objects. It searches parent frames and popup opener windows for either the SCORM 2004 API (API_1484_11) or the SCORM 1.2 API (API), handles cross-origin security errors gracefully, then reads cmi.suspend_data and stores both the data and its length in Storyline variables. Because it uses the standard API names that LMSs are required to expose, it is more portable across different LMS platforms and less likely to break if Storyline changes its internal JavaScript objects in a future release.
The second script is more direct because it relies on Storyline's SCORM2004_objAPI object instead of searching for the SCORM API in parent frames or popup windows. It simply retrieves the value of cmi.suspend_data, stores the data and its length in Storyline variables, and logs the length to the browser console. While this approach is simpler and easier to read, it depends on a Storyline-specific object and therefore offers less portability than the first script, which uses the standard SCORM API discovery method. It only works for SCORM2004.
Let me know if you have any questions. You can always tag me here or contact me privately at mailto:nedim.ramic@gmail.com.