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
});
Насколько я знаю, событие ошибки не дает сообщения об ошибке или других подробностей.