diff options
Diffstat (limited to 'src/js/plyr.js')
-rw-r--r-- | src/js/plyr.js | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/js/plyr.js b/src/js/plyr.js index 4a708d32..8a23d239 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -527,11 +527,11 @@ } // Unbind event - /*function _off(element, events, callback, useCapture) { + function _off(element, events, callback, useCapture) { if (element) { _toggleListener(element, events, callback, false, useCapture); } - }*/ + } // Trigger event function _event(element, type, bubbles, properties) { @@ -2939,6 +2939,10 @@ } } + function onBodyClick() { + _toggleClass(_getElement('.' + config.classes.tabFocus), config.classes.tabFocus, false); + } + // Listen for control events function _controlListeners() { // IE doesn't support input event, so we fallback to change @@ -3153,9 +3157,7 @@ checkTabFocus(focused); } }); - _on(document.body, "click", function() { - _toggleClass(_getElement("." + config.classes.tabFocus), config.classes.tabFocus, false); - }); + _on(document.body, "click", onBodyClick); for (var button in plyr.buttons) { var element = plyr.buttons[button]; @@ -3437,9 +3439,15 @@ // Replace the container with the original element provided plyr.container.parentNode.replaceChild(original, plyr.container); + // Free container in order for GC to remove it and prevent memory leaks due to added events + plyr.container = null; + // Allow overflow (set on fullscreen) document.body.style.overflow = ""; + //remove events + _off(document.body, 'click', onBodyClick); + // Event _triggerEvent(original, "destroyed", true); } |