SoundCloud HTML5小部件 - 如何处理错误,特别是404“未找到声音”

时间:2013-07-08 00:08:37

标签: html5 api soundcloud web-widget

我正在将SoundCloud集成到我的网站并使用HTML5播放器小部件。

我的网站会创建播放列表和自动进度。

我在测试中遇到了以下问题。

某些声音而不是播放导致HTML5小部件显示消息,“404错误:无法找到此声音”

我也使用YouTube API,他们有一个onError事件,可以轻松处理错误,在我的特定情况下,跳到播放列表中的下一首曲目。

我已经搜索了文档和StackOverflow,我很惊讶地看到没有提到如何处理SoundCloud的这种常见用例。

我在SC HTML5小部件上使用事件绑定,但没有提到错误事件??

所以问题是具体如何捕获404然后执行自定义代码?

非常感谢一个很棒的API!

2 个答案:

答案 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
});

据我所知,错误事件不会提供错误消息或其他详细信息。