我正在将SoundCloud集成到我的网站并使用HTML5播放器小部件。
我的网站会创建播放列表和自动进度。
我在测试中遇到了以下问题。
某些声音而不是播放导致HTML5小部件显示消息,“404错误:无法找到此声音”
我也使用YouTube API,他们有一个onError事件,可以轻松处理错误,在我的特定情况下,跳到播放列表中的下一首曲目。
我已经搜索了文档和StackOverflow,我很惊讶地看到没有提到如何处理SoundCloud的这种常见用例。
我在SC HTML5小部件上使用事件绑定,但没有提到错误事件??
所以问题是具体如何捕获404然后执行自定义代码?
非常感谢一个很棒的API!
答案 0 :(得分:3)
我遇到了同样的问题,并提出了解决方法。我在函数内部初始化小部件,并在函数的开头执行setTimeout(),对播放或错误事件执行clearTimeout(),这样如果轨道播放或抛出错误,我可以使用事件侦听器处理它,如果它我不能用setTimeout()中的函数来处理它。
function createSoundcloudWidget() {
var soundcloudTimeout = setTimeout(function() {
onError();//the function to call when you get an error that doesn't throw an event
}, 3000)
var iframe = document.querySelector('#SCwidget');
WIDGET = SC.Widget(iframe);
WIDGET.bind(SC.Widget.Events.ERROR, function(eventData) {
clearTimeout(soundcloudTimeout); //clears timeout
}
WIDGET.bind(SC.Widget.Events.READY, function(eventData) {
clearTimeout(soundcloudTimeout); //clears timeout
});
}
它并不完美,但它可以让你在任何不渲染小部件的轨道上执行功能。
答案 1 :(得分:0)
SoundCloud HTML5小部件今天支持SC.Widget.Events.ERROR事件。
可以通过以下方式捕获错误:
widget.bind(SC.Widget.Events.ERROR, function() {
// error handling
});
据我所知,错误事件不会提供错误消息或其他详细信息。