2

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

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

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

在 HTML5 小部件中显示消息“404 错误:糟糕,找不到此声音”中的某些声音而不是播放结果

我还使用 YouTube API,他们有一个 onError 事件,可以很容易地处理错误,在我的特殊情况下,可以跳到播放列表中的下一个曲目。

我浏览了文档和 StackOverflow,我很惊讶地发现没有提及如何处理 SoundCloud 的这个常见用例。

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

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

非常感谢一个很棒的 AP​​I!

4

2 回答 2

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

它并不完美,但它可以让您在任何不呈现小部件的轨道上执行功能。

于 2014-04-23T17:17:36.487 回答
0

SoundCloud HTML5 小部件今天支持 SC.Widget.Events.ERROR 事件。

可以通过以下方式捕获错误:

widget.bind(SC.Widget.Events.ERROR, function() {
 // error handling
});

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

于 2013-12-11T11:21:26.790 回答