Fix Chrome fullscreen error

When embedding h5p and using the fullscreen enter/exit feature, Chrome can produce the following error:
TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
    at HTMLDocument.<anonymous> 

This happens because arguments.callee is not accessible. To fix this, it is sufficient to name the anonymous callback function and reference it by name.
pull/113/head
Alex Kennberg 2021-11-18 20:25:34 -08:00 committed by GitHub
parent 22115c0aea
commit 2582c50783
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 2 additions and 2 deletions

View File

@ -662,7 +662,7 @@ H5P.fullScreen = function ($element, instance, exitCallback, body, forceSemiFull
before('h5p-fullscreen'); before('h5p-fullscreen');
var first, eventName = (H5P.fullScreenBrowserPrefix === 'ms' ? 'MSFullscreenChange' : H5P.fullScreenBrowserPrefix + 'fullscreenchange'); var first, eventName = (H5P.fullScreenBrowserPrefix === 'ms' ? 'MSFullscreenChange' : H5P.fullScreenBrowserPrefix + 'fullscreenchange');
document.addEventListener(eventName, function () { document.addEventListener(eventName, function fullscreenCallback() {
if (first === undefined) { if (first === undefined) {
// We are entering fullscreen mode // We are entering fullscreen mode
first = false; first = false;
@ -672,7 +672,7 @@ H5P.fullScreen = function ($element, instance, exitCallback, body, forceSemiFull
// We are exiting fullscreen // We are exiting fullscreen
done('h5p-fullscreen'); done('h5p-fullscreen');
document.removeEventListener(eventName, arguments.callee, false); document.removeEventListener(eventName, fullscreenCallback, false);
}); });
if (H5P.fullScreenBrowserPrefix === '') { if (H5P.fullScreenBrowserPrefix === '') {