|
2267 | 2267 | self._loadFn = self._loadListener.bind(self);
|
2268 | 2268 | self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);
|
2269 | 2269 |
|
| 2270 | + // Listen for 'play' event to let us know when sound is played. |
| 2271 | + // This can be triggered externally by media keys (eg. TouchBar on MacOs for instance) |
| 2272 | + self._playFn = self._playListener.bind(self); |
| 2273 | + self._node.addEventListener('play', self._playFn, false); |
| 2274 | + |
| 2275 | + // Listen for 'pause' event to let us know when sound is paused. |
| 2276 | + // This can be triggered externally by media keys (eg. TouchBar on MacOs for instance) |
| 2277 | + self._pauseFn = self._pauseListener.bind(self); |
| 2278 | + self._node.addEventListener('pause', self._pauseFn, false); |
| 2279 | + |
2270 | 2280 | // Listen for the 'ended' event on the sound to account for edge-case where
|
2271 | 2281 | // a finite sound has a duration of Infinity.
|
2272 | 2282 | self._endFn = self._endListener.bind(self);
|
|
2347 | 2357 | self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);
|
2348 | 2358 | },
|
2349 | 2359 |
|
| 2360 | + /** |
| 2361 | + * HTML5 Audio play listener callback |
| 2362 | + * Sound is already played/paused so just update state and notify |
| 2363 | + */ |
| 2364 | + _playListener: function() { |
| 2365 | + this._paused = false; |
| 2366 | + this._parent._emit('play', this._id); |
| 2367 | + }, |
| 2368 | + |
| 2369 | + /** |
| 2370 | + * HTML5 Audio pause listener callback. |
| 2371 | + * Sound is already played/paused so just update state and notify |
| 2372 | + */ |
| 2373 | + _pauseListener: function() { |
| 2374 | + this._paused = true; |
| 2375 | + this._parent._emit('pause', this._id); |
| 2376 | + }, |
| 2377 | + |
2350 | 2378 | /**
|
2351 | 2379 | * HTML5 Audio ended listener callback.
|
2352 | 2380 | */
|
|
0 commit comments