我将完成事件绑定到窗口小部件,它适用于第一个窗口小部件,但不适用于同一页面上的第二个窗口小部件。
未捕获的TypeError:无法读取属性' postMessage'为null
这就是我初始化它的方式。
var widget = SC.Widget($instance[0]);
widget.bind(SC.Widget.Events.FINISH, function(){
options.done();
});
用例是一次显示1个曲目。当第一个完成时,第二个被加载。由于这个例外,我无法播放第二个。我知道我可以使用SDK来执行此操作,但我尝试使用小部件,因此我不必提供自己的用户界面。
有什么想法吗?这显然是SoundCloud Widget API的一个错误。我试图查看是否有解决方法。
EDITED
更新以包含更多信息。这是一个非常简单的案例,并没有什么特别之处。
Simplified JS - 这几乎适用于Javascript。没什么特别的。
var $track1 = $('<iframe id="sc1" src="//w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/79973942&hide_related=true&visual=true&auto_play=true" frameborder="0"></iframe>');
$('body').append($track1);
var widget = SC.Widget($track1[0]);
widget.bind(SC.Widget.Events.FINISH, function(){
$track1.remove();
var $track2 = $('<iframe id="sc2" src="//w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/131713700&hide_related=true&visual=true&auto_play=true" frameborder="0"></iframe>');
$('body').append($track2);
var widget = SC.Widget($track2[0]);
widget.bind(SC.Widget.Events.FINISH, function(){
console.log('Done');
});
});
已编辑2
忘记提及这些帧是动态添加的。我调整了代码以匹配。