widgets javascript api sdk soundcloud

javascript - widgets - Los eventos de devolución de llamada SoundCloud SDK/API no se activan



soundcloud widget (2)

No puedo publicar comentarios, así que trátelo como uno. Por razones desconocidas (al menos para mí), lo que obtienes realmente como objeto de sonido en SDK 2 es el jugador, no una pista. Funciona correctamente si usa sdk.js en su lugar.

Aquí hay un ejemplo simple que creo que debería funcionar según los documentos. La transmisión se reproduce, pero las devoluciones de llamada no se activan. ¿Estoy cometiendo un error o hay algún error entre SDK / API / SoundManager?

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <h1>Sound Cloud API callback test</h1> <script src="//connect.soundcloud.com/sdk-2.0.0.js"></script> <script type="text/javascript"> SC.initialize({ client_id: "YOUR_CLIENT_ID" }); SC.stream( ''/tracks/293'', { onload: function() { console.log("Does not fire."); }, onplay: function() { console.log("Does not fire."); }, onfinish: function() { console.log("Does not fire."); } }, function(sound) { sound.play(); }); </script> </body> </html>

Esta es una pregunta similar, pero no ha habido respuestas. Soundcloud Javascript SDK 2.0 - El evento Stream onfinish no se ejecuta


Al usar html5, puede orientar el elemento de audio directamente y vincular acciones personalizadas a los eventos de devolución de llamada en ese lugar. Los ejemplos a continuación son más o menos equivalentes a los eventos SDK que no se activan. Es una solución alternativa, pero como html5 es el método predeterminado, es confiable para uso común, incluido iOS.

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <h1>Sound Cloud API callback test</h1> <script src="//connect.soundcloud.com/sdk-2.0.0.js"></script> <script type="text/javascript"> SC.initialize({ client_id: "YOUR_CLIENT_ID" }); SC.stream( ''/tracks/293'', function(sound) { html5Audio = sound._player._html5Audio; html5Audio.addEventListener(''canplay'', function(){ console.log(''event fired: canplay''); }); html5Audio.addEventListener(''play'', function(){ console.log(''event fired: play''); }); html5Audio.addEventListener(''ended'', function(){ console.log(''event fired: ended''); }); sound.play(); }); </script> </body> </html>

Aquí hay una lista de más eventos de medios html5 disponibles:
https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events