Chrome 80 and scorm unload issues

71 views
Skip to first unread message

rick

unread,
Jul 2, 2020, 10:52:29 AM7/2/20
to eLearning Technology and Development
hello

I am very new to scorm and have been using the pipewerks wrapper to keep things nice and easy.

I know Chrome 80 has been out for a while and the issue is related to synchronous XMLHttpRequest being blocked. I believe I have two options. 
1st being to add a close button to my course instead of using the one built in to the LMS to close the window.
2nd is to have the LMS updated I believe to use sendBeacon.

The issue is, our LMS ( I do not wish to name ) is stating there is nothing they can do on the LMS and my code needs to be changed, is this ture? if not, I would really appreciate any pointers I can pass on to our LMS company to help resolve the issue or any pointers on what to change in my code?

For the time being I have added an exit button instead of using the one to close the popup window they use but, I just don't feel this is the correct fix.

Thank you in advance.

Elena Elizondo

unread,
Jul 2, 2020, 11:04:05 AM7/2/20
to elearning-technolo...@googlegroups.com
Hi,

You can try the SCORM package in SCORM Cloud sandbox provided by scorm.com :


It's free and it'll give you a hint if there's an issue with your SCORM package in the logs.
I don't know if it still exists, but there's a wrapper that is very simple to use is Reload.

Hope it helps!

Have a nice day

Elena 


logo-mail
Elena ELIZONDO
Marketing & Communication
Tel : +33 (0)4 72 53 94 10
elena.e...@speedernet.fr
67 rue du Bourbonnais - 69 009 LYON
www.speedernet.fr


--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elearning-technology-and-development/504c356c-ae07-4d29-9415-82a1e977a537o%40googlegroups.com.
Message has been deleted

Philip Hutchison

unread,
Jul 2, 2020, 1:50:00 PM7/2/20
to elearning-technolo...@googlegroups.com
Hi Rick

The pipwerks wrapper (and SCORM) do not use xmlhttprequest. If the browser is throwing an error due to synchronous xmlhttprequest, then it's 100% on the LMS.

A quick primer for those unfamiliar with xmlhttprequest: xmlhttprequest is a JavaScript function for submitting data to a remote server. This submission can be performed synchronously (acts like a regular function and pauses all script execution until a return value is received) or asynchronously (scripts on the page continue to run while listener waits for the request's return value). In general, synchronous requests should be avoided -- the browser will not allow any other scripts on the page to run until a response is received from the server. If this takes time, or no response is received, it will give the appearance the browser is locked up and is unresponsive. It will feel broken to the end user.

Asynchronous code is safer because it doesn't block the browser, and you can avoid making the browser feel broken. However, it requires use of callbacks, which complicates the cosebase, especially for people who are not comfortable working with callbacks. This was a big deal 10-15 years ago when callbacks were less common and built-in functions/libraries for handling callbacks (e.g. promises) were not available. Chances are, your LMS's SCORM system was written 10+ years ago, and uses synchronous xmlhttprequest when the page is unloaded. This is triggering the error in Chrome.

From the Chrome blog: "Chrome now disallows synchronous calls to XMLHTTPRequest() during page dismissal when the page is being navigated away from or is closed by the user. This applies to beforeunload, unload, pagehide, and visibilitychange."

If your LMS vendor wrote their own SCORM codebase, I can pretty much guarantee you that they will not want to update the SCORM code to avoid this Chrome 80 issue. It will cost them money, and it is very likely they don't even have a developer fluent in SCORM on staff anymore because the code was written years ago and has not been updated in years.

LMSs that use a vendor-provided solution such as Rustici Software's system will likely receive updates because the 3rd-party vendor maintains the SCORM codebase.

Regardless, it is outside the scope of the course and needs to be handled on the LMS end. There is nothing you can do about it except avoiding invoking beforeunload and unload, which goes against SCORM best practices.

You can give your students a button to click at the end of the course which will handle your end-of-course scripts and trigger Commit() before the page unloads, but it doesn't address what happens if the student leaves mid-course. It's up to you to re-examine your use of beforeunload and unload to ensure that you're committing your student's data regularly. In my courses, I have a script that detects whether the page's activity is complete, and if yes, updates the completion status and bookmark. In my courses, beforeunload and unload trigger one last Commit() as a 'just in case' but I am confident the data has already been committed. If you wait for the unload or beforeunload events to trigger before executing Commit(), you're asking for trouble.

If you're confident your data has been saved correctly prior to beforeunload and unload being called, you can choose to remove your beforeunload and unload handlers, or simply ignore any errors they generate.

The pipwerks wrapper does not invoke unload or beforeunload. It was designed to allow you to invoke Commit() -- aka scorm.save() -- in your course wherever you see fit.

- philip




On Thu, Jul 2, 2020 at 10:08 AM 'rick' via eLearning Technology and Development <elearning-technolo...@googlegroups.com> wrote:
Hi Elana

I have already used cloud.scorm and it runs fine in Chrome, if you are talking about the pipewerks wrapper then that's one I am using.

Regards
Rick

Philip Hutchison

unread,
Jul 2, 2020, 1:59:00 PM7/2/20
to elearning-technolo...@googlegroups.com
All: Rick also posted this question as an issue on GitHub, here is the link if you'd like to read it: https://github.com/pipwerks/scorm-api-wrapper/issues/45

Matt (moloko) pointed out that Rustici Software has already addressed the issue, so any LMS vendor that uses their SCORM engine should be fine. It's the LMS vendors that rolled their own code who will be stragglers and will likely not address the issue anytime soon (if at all).


rick

unread,
Jul 2, 2020, 2:15:31 PM7/2/20
to eLearning Technology and Development
Hi Philip

This is what I am seeing if it helps at all?

Regards
Rick

Scorm capture.PNG

On Thu, Jul 2, 2020 at 4:52 PM 'rick' via eLearning Technology and Development <elearning-technology-and-devel...@googlegroups.com> wrote:
hello

I am very new to scorm and have been using the pipewerks wrapper to keep things nice and easy.

I know Chrome 80 has been out for a while and the issue is related to synchronous XMLHttpRequest being blocked. I believe I have two options. 
1st being to add a close button to my course instead of using the one built in to the LMS to close the window.
2nd is to have the LMS updated I believe to use sendBeacon.

The issue is, our LMS ( I do not wish to name ) is stating there is nothing they can do on the LMS and my code needs to be changed, is this ture? if not, I would really appreciate any pointers I can pass on to our LMS company to help resolve the issue or any pointers on what to change in my code?

For the time being I have added an exit button instead of using the one to close the popup window they use but, I just don't feel this is the correct fix.

Thank you in advance.

--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and-development+unsubscribe@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and-development+unsubscribe@googlegroups.com.

Philip Hutchison

unread,
Jul 2, 2020, 2:27:14 PM7/2/20
to elearning-technolo...@googlegroups.com
Right. The warning appears when data is retrieved from the LMS via the SCORM API. Which implies the LMS's SCORM codebase is using synchronous xmlhttprequest for ALL calls, not just Commit(). Bad choice on their part. Nothing you can do about it except continue to point out to them that their use of synchronous xmlhttprequest is not adhering to best practices.

Not to mention it uses jQuery 2.0.3, which was released in April 2013!

Confirmation that they haven't maintained their code for years, and that it's a crap LMS. Good luck getting them to update it.



To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elearning-technology-and-development/70d80b9f-5939-4ef2-a46f-242d8f0a4bfbo%40googlegroups.com.

MOLOKO

unread,
Jul 24, 2020, 7:24:49 AM7/24/20
to eLearning Technology and Development
Just a heads up that it seems pretty certain from this link that SuccessFactors has this issue and that they don't seem to think it is their problem to solve...? Shocking attitude if true. Obviously as course developers we can include a close button in the course but we have no way of preventing the learner from closing the browser via other means...

Also FYI the 'synchronous XHR on page dismissal' change also impacts the Edge browser since it is now based on Chromium, as is the Opera browser.

Philip Hutchison

unread,
Jul 24, 2020, 1:55:31 PM7/24/20
to elearning-technolo...@googlegroups.com
Interesting find. The linked page says they're implementing a fix, so hopefully they've seen the light.

Reply all
Reply to author
Forward
0 new messages