SoundCloud HTML5 Widget - Как мне обрабатывать ошибки, в частности 404 "Звук не найден"

Я интегрирую SoundCloud в свой сайт и использую виджет проигрывателя HTML5.

Мой сайт создает плейлисты и авансы.

Я сталкиваюсь со следующей проблемой в тестировании.

Некоторые звуки, а не воспроизведение, приводят к тому, что виджет HTML5 отображает сообщение "Ошибка 404: не удается найти этот звук"

Я также использую API YouTube, и у них есть событие onError, которое позволяет легко обрабатывать ошибки и в моем конкретном случае переходить к следующей дорожке в списке воспроизведения.

Я изучил документацию и Stackru, и я удивлен, что там нет упоминаний о том, как обрабатывать этот общий вариант использования для SoundCloud.

Я использую привязку событий к виджету SC HTML5, но нет упоминания об ошибке?

Поэтому вопрос заключается в том, как я могу перехватить 404, а затем выполнить пользовательский код?

Большое спасибо за отличный API!

2 ответа

У меня была такая же проблема, и я нашел способ ее обойти. Я инициализирую виджет внутри функции и выполняю setTimeout() в начале функции и clearTimeout() для событий play или error. Таким образом, если дорожка воспроизводит или выдает ошибку, я могу обработать ее с помощью прослушивателей событий, и если Разве я не могу справиться с этим с помощью функции внутри 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
    });
}

Это не идеально, но это позволит вам выполнять функцию на любых дорожках, которые не отображают виджет.

HTML5 виджет SoundCloud сегодня поддерживает событие SC.Widget.Events.ERROR.

Ошибки могут быть обнаружены с помощью:

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

Насколько я знаю, событие ошибки не дает сообщения об ошибке или других подробностей.

Другие вопросы по тегам