Also remove 'once' event listeners when destroying (they may still be waiting)
This commit is contained in:
		
							
								
								
									
										2
									
								
								src/js/controls.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								src/js/controls.js
									
									
									
									
										vendored
									
									
								
							| @ -1068,7 +1068,7 @@ const controls = { | ||||
|             }; | ||||
|  | ||||
|             // Listen for the transition finishing and restore auto height/width | ||||
|             once(container, transitionEndEvent, restore); | ||||
|             once.call(this, container, transitionEndEvent, restore); | ||||
|  | ||||
|             // Set dimensions to target | ||||
|             container.style.width = `${size.width}px`; | ||||
|  | ||||
| @ -210,7 +210,7 @@ class Listeners { | ||||
|         toggleListener.call(this.player, document.body, 'click', this.toggleMenu, toggle); | ||||
|  | ||||
|         // Detect touch by events | ||||
|         once(document.body, 'touchstart', this.firstTouch); | ||||
|         once.call(this.player, document.body, 'touchstart', this.firstTouch); | ||||
|     } | ||||
|  | ||||
|     // Container listeners | ||||
|  | ||||
| @ -975,7 +975,7 @@ class Plyr { | ||||
|      * @param {function} callback - Callback for when event occurs | ||||
|      */ | ||||
|     once(event, callback) { | ||||
|         once(this.elements.container, event, callback); | ||||
|         once.call(this, this.elements.container, event, callback); | ||||
|     } | ||||
|     /** | ||||
|      * Remove event listeners | ||||
|  | ||||
| @ -27,7 +27,7 @@ const supportsPassiveListeners = (() => { | ||||
| })(); | ||||
|  | ||||
| // Toggle event listener | ||||
| export function toggleListener(element, event, callback, toggle = false, passive = true, capture = false, once = false) { | ||||
| export function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) { | ||||
|     // Bail if no element, event, or callback | ||||
|     if (!is.element(element) || is.empty(event) || !is.function(callback)) { | ||||
|         return; | ||||
| @ -52,7 +52,7 @@ export function toggleListener(element, event, callback, toggle = false, passive | ||||
|  | ||||
|     // If a single node is passed, bind the event listener | ||||
|     events.forEach(type => { | ||||
|         if (this && this.eventListeners && toggle && !once) { | ||||
|         if (this && this.eventListeners && toggle) { | ||||
|             // Cache event listener | ||||
|             this.eventListeners.push({ element, type, callback, options }); | ||||
|         } | ||||
| @ -78,7 +78,7 @@ export function once(element, events = '', callback, passive = true, capture = f | ||||
|         callback.apply(this, args); | ||||
|     } | ||||
|  | ||||
|     toggleListener(element, events, onceCallback, true, passive, capture, true); | ||||
|     toggleListener.call(this, element, events, onceCallback, true, passive, capture); | ||||
| } | ||||
|  | ||||
| // Trigger event | ||||
|  | ||||
		Reference in New Issue
	
	Block a user