Calling LMSCommit(); in JavaScript trigger no longer working in Storyline 360

Mar 07, 2018

Hello,

I've been working on a course that relies on forcing bookmarking on LMS when loading certain slides. The reason for this is send the users back to the beginning of an assessment if they leave partway through. The project requires normal bookmarking behavior during the learning content, but users must take the entire assessment in one session.

The logic on each assessment slide is this:

  • Jump to Beginning of Assessment if slideX var = true
  • Set slideX var = true
  • Execute JavaScript LMSCommit();

This was working fine in previous versions of Storyline 360, but LMSCommit(); does not seem to work any longer. Now the variable is not saved because bookmarking does not happen in Storyline until the slide changes, and thus the user returns back to the middle of the assessment instead of the beginning.

So my question is - does anyone know a way to manually force bookmarking in the latest version of Storyline 360?

I am thinking that Storyline's LMS-related JavaScript changed with the addition of the new course completion triggers, but I don't know how to work around this issue now that LMSCommit no longer works.

I noticed another function in lms.js called ForceCommit() that doesn't seem familiar, but I can't seem to call it directly.

Any help would be greatly appreciated, because I am stuck without the LMSCommit functionality for this course.

Thank you,
Matt

12 Replies
OWEN HOLT

This might be the result of changes to the player in html5.  I haven't tested this, but you might first have to locate the lms before calling LMSCommit();

Again, I haven't tested this code but you might try the following which uses the GetStudentID command as an LMS marker to confirm the path to the LMS:

function findLMSAPI(win) {
    // look in this window
    if (win.hasOwnProperty("GetStudentID")) return win;
    // all done if no parent
    else if (win.parent == win) return null;
    // climb up to parent window & look there
    else return findLMSAPI(win.parent);
}

//Run the function and store the result in a variable
var lmsAPI = findLMSAPI(this);

//Call the LMS commit command
lmsAPI.LMSCommit();

Matt Leo

Hi Owen,

I was wondering about that too. I will give it a try when time permits.

I'm a little worried that it still won't work if I can't do a LMS commit, but there might be a workaround in there somewhere.

As an aside, a co-worker tested the LMSCommit(); code on an older version, Storyline 360 v11 and it worked. So it seems like something changed with v12 or v13. If I had to guess it was that some of the LMS code was re-written when they introduced the Course Completion triggers in v13.

Thanks again.

This discussion is closed. You can start a new discussion or contact Articulate Support.