Soundcloud HTML5播放器:Events.FINISH只触发一次

时间:2012-05-01 10:41:27

标签: html5 soundcloud

我正在使用SC HTML5播放器,当一个声音结束时,我加载到另一个源,但FINISH事件似乎只为第一首歌开火,我的代码如下

//Set the source
document.getElementById("sc-widget").src = scPath;
//get the widget reference
var widgetIframe = document.getElementById('sc-widget'),
widget       = SC.Widget(widgetIframe);
//set the finish event
widget.bind(SC.Widget.Events.FINISH, endSC);

function endSC() {
                    var scPath = "http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F1848538&show_artwork=true&auto_play=true";
                    document.getElementById("sc-widget").src = scPath;
                    var widgetIframe = document.getElementById('sc-widget'),
                    widget       = SC.Widget(widgetIframe);
                    widget.bind(SC.Widget.Events.FINISH, endSC);
}

我已经尝试将endSC目标设置为另一个功能,但这不起作用,我错过了什么?谢谢!

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。当我第一次调用它时,SC.Widget方法工作正常,但如果我第二次尝试调用它,控制台将触发" Uncaught TypeError:无法读取属性' parentWindow' of null" http://w.soundcloud.com/player/api.js脚本中的错误。这就是api.js脚本停止的动作(.Widget,.bind等)

我找到了解决方案。这很奇怪,但这是一个解决方案。 SoundCloud远程脚本缩小了。将它加载到您的浏览器中,将C / P加载到某些在线js美化中并在本地保存。编辑第103行,如下所示:

return a.contentWindow;// || a.contentDocument.parentWindow

所以我删除了.parentWindow调用。

保存文件并将其调用到您网页的头部。就是这样!现在FINISH事件会在每个加载的小部件上触发。

我希望这会有所帮助。