diff options
author | Sam Potts <sam@selz.com> | 2017-11-04 18:11:35 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-04 18:11:35 +1100 |
commit | 650ee2c18f7a5e3d18bff4dd9ce120d4fe80c6d7 (patch) | |
tree | 3cdf1f10aa71640b3f9c5979d8ff29e9fc094a75 | |
parent | b3759e966d96b4a9f3ed3f7795c42e611b63d104 (diff) | |
parent | 7234e2f5a3fb10034c30ff8a85902752a217a08c (diff) | |
download | plyr-650ee2c18f7a5e3d18bff4dd9ce120d4fe80c6d7.tar.lz plyr-650ee2c18f7a5e3d18bff4dd9ce120d4fe80c6d7.tar.xz plyr-650ee2c18f7a5e3d18bff4dd9ce120d4fe80c6d7.zip |
Merge pull request #700 from ashkanhosseini/master
fix #684 memory leaks issues after destroy.
-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 4da34153..a60978e9 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -519,11 +519,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) { @@ -2931,6 +2931,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 @@ -3145,9 +3149,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]; @@ -3429,9 +3431,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); } |