SoundCloud SDK / API 回调事件未触发
SoundCloud SDK / API callback events not firing
这里有一个简单的例子,我认为根据文档应该是可行的。流播放,但回调不触发。我是不是弄错了,或者 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>
这是一个类似的问题,但一直没有答案。
我无法 post 发表评论,所以请将其视为一个。由于未知的原因(至少对我而言),您在 SDK 2 中作为声音对象实际获得的是播放器,而不是音轨。如果您改用 sdk.js,它确实可以正常工作。
使用 html5 时,您可以直接定位音频元素并将自定义操作绑定到该元素的回调事件。下面的示例大致相当于未触发的 SDK 事件。这是一种解决方法,但由于 html5 是默认方法,因此对于包括 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>
以下是更多可用的 html5 媒体活动列表:
https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events
这里有一个简单的例子,我认为根据文档应该是可行的。流播放,但回调不触发。我是不是弄错了,或者 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>
这是一个类似的问题,但一直没有答案。
我无法 post 发表评论,所以请将其视为一个。由于未知的原因(至少对我而言),您在 SDK 2 中作为声音对象实际获得的是播放器,而不是音轨。如果您改用 sdk.js,它确实可以正常工作。
使用 html5 时,您可以直接定位音频元素并将自定义操作绑定到该元素的回调事件。下面的示例大致相当于未触发的 SDK 事件。这是一种解决方法,但由于 html5 是默认方法,因此对于包括 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>
以下是更多可用的 html5 媒体活动列表:
https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events