We have recently uncovered an issue with certain browsers using ad blocker plugins that may affect the sending of final completion data to Engine in some releases of 2015.1. This article outlines the issue and what you can do to prevent it.
When the SCORM Engine player unloads, it does a final postback to record the fact that it exited, and to communicate any last changes in the state of the content. In Engine 2015.1, we implemented the usage of a new browser function called sendBeacon in order to make this final postback more reliable. This function is available in most modern browsers, and allows the final request to be made asynchronously so that it does not delay the loading of the next page being navigated to (or the close of the browser tab). The player page will use this function if it’s supported, and fall back to its previous method of using a synchronous XHR call if not.
We have found that some ad blocker plugins, in some browsers, can cause these sendBeacon requests to not be sent — the ad blocker intercepts and cancels the request.
This is a problem because our code has no way to know that the ad blocker has done this. That means that we do not have the chance to fallback to our original mechanism for sending the request, and exit/completion data can be lost.
Thankfully, we have a configuration setting that can be used to tell Engine not to use the sendBeacon feature at all, even if the browser supports it.
For Java Engine, you would add the following to your SCORMEngineSettings.properties file:
<entry key="PreferSendBeacon”>False</entry>
For .NET Engine, you would add the following to your SCORMEngineSettings.config file:
<add key="PreferSendBeacon" value="False"/>
Until we can be confident that this issue has been resolved by the major browsers, we are recommending that everyone on 2015.1 Engine use this setting.
Note: starting with Engine version 2015.1.21.1733, we have turned off the usage of sendBeacon by default, so there would be no action necessary if you are on that version or higher.