|
241 | 241 | * Add event listeners for mouse movement and window resize |
242 | 242 | */ |
243 | 243 | DotWave.prototype._addEventListeners = function() { |
| 244 | + this._boundMouseMove = this._handleMouseMove.bind(this); |
| 245 | + this._boundMouseEnter = this._handleMouseEnter.bind(this); |
| 246 | + this._boundMouseLeave = this._handleMouseLeave.bind(this); |
| 247 | + this._boundResize = this._handleResize.bind(this); |
| 248 | + |
244 | 249 | // Mouse movement listeners |
245 | | - this.container.addEventListener('mousemove', this._handleMouseMove.bind(this)); |
246 | | - this.container.addEventListener('mouseenter', this._handleMouseEnter.bind(this)); |
247 | | - this.container.addEventListener('mouseleave', this._handleMouseLeave.bind(this)); |
| 250 | + this.container.addEventListener('mousemove', this._boundMouseMove); |
| 251 | + this.container.addEventListener('mouseenter', this._boundMouseEnter); |
| 252 | + this.container.addEventListener('mouseleave', this._boundMouseLeave); |
248 | 253 |
|
249 | 254 | // Window resize |
250 | | - window.addEventListener('resize', this._handleResize.bind(this)); |
| 255 | + window.addEventListener('resize', this._boundResize); |
251 | 256 | }; |
252 | 257 |
|
253 | 258 | /** |
|
574 | 579 | } |
575 | 580 |
|
576 | 581 | // Remove event listeners |
577 | | - this.container.removeEventListener('mousemove', this._handleMouseMove); |
578 | | - this.container.removeEventListener('mouseenter', this._handleMouseEnter); |
579 | | - this.container.removeEventListener('mouseleave', this._handleMouseLeave); |
580 | | - window.removeEventListener('resize', this._handleResize); |
| 582 | + if (this._boundMouseMove) { |
| 583 | + this.container.removeEventListener('mousemove', this._boundMouseMove); |
| 584 | + this.container.removeEventListener('mouseenter', this._boundMouseEnter); |
| 585 | + this.container.removeEventListener('mouseleave', this._boundMouseLeave); |
| 586 | + window.removeEventListener('resize', this._boundResize); |
| 587 | + |
| 588 | + this._boundMouseMove = null; |
| 589 | + this._boundMouseEnter = null; |
| 590 | + this._boundMouseLeave = null; |
| 591 | + this._boundResize = null; |
| 592 | + } |
581 | 593 |
|
582 | 594 | // Remove canvas |
583 | 595 | if (this.canvas && this.canvas.parentNode) { |
|
0 commit comments