我正在使用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目标设置为另一个功能,但这不起作用,我错过了什么?谢谢!
答案 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事件会在每个加载的小部件上触发。
我希望这会有所帮助。