Skip to content

Commit 8134b7b

Browse files
committed
html5 play/pause events
goldfire#1475
1 parent a1ed784 commit 8134b7b

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

src/howler.core.js

+28
Original file line numberDiff line numberDiff line change
@@ -2267,6 +2267,16 @@
22672267
self._loadFn = self._loadListener.bind(self);
22682268
self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);
22692269

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+
22702280
// Listen for the 'ended' event on the sound to account for edge-case where
22712281
// a finite sound has a duration of Infinity.
22722282
self._endFn = self._endListener.bind(self);
@@ -2347,6 +2357,24 @@
23472357
self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);
23482358
},
23492359

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+
23502378
/**
23512379
* HTML5 Audio ended listener callback.
23522380
*/

0 commit comments

Comments
 (0)