File tree Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Original file line number Diff line number Diff line change 1926
1926
self . _loadFn = self . _loadListener . bind ( self ) ;
1927
1927
self . _node . addEventListener ( Howler . _canPlayEvent , self . _loadFn , false ) ;
1928
1928
1929
+ // Listen for 'ended' event to let us know the sound has ended.
1930
+ // Normally we'd do fine without, but this will help a Safari edge case with infinite html5 audio
1931
+ self . _endFn = self . _endListener . bind ( self ) ;
1932
+ self . _node . addEventListener ( 'ended' , self . _endFn , false ) ;
1933
+
1929
1934
// Setup the new audio node.
1930
1935
self . _node . src = parent . _src ;
1931
1936
self . _node . preload = 'auto' ;
2000
2005
2001
2006
// Clear the event listener.
2002
2007
self . _node . removeEventListener ( Howler . _canPlayEvent , self . _loadFn , false ) ;
2008
+ } ,
2009
+
2010
+ /**
2011
+ * HTML5 Audio ended listener callback.
2012
+ */
2013
+ _endListener : function ( ) {
2014
+ var self = this ;
2015
+
2016
+ // Fire an end event - the duration should have been infinite but the audio ended anyways.
2017
+ if ( self . _parent . _duration === Infinity ) {
2018
+ self . _parent . _ended ( self ) ;
2019
+ }
2020
+
2021
+ // Clear the event listener.
2022
+ self . _node . removeEventListener ( 'ended' , self . _endFn , false ) ;
2003
2023
}
2004
2024
} ;
2005
2025
You can’t perform that action at this time.
0 commit comments