2013-07-08 4 views
2

SoundCloud를 내 사이트에 통합하고 HTML5 플레이어 위젯을 사용하고 있습니다.SoundCloud HTML5 위젯 - 오류를 처리하는 방법, 특히 404 "소리를 찾을 수 없습니다"

내 사이트가 재생 목록을 만들고 자동 진행됩니다.

테스트 할 때 다음과 같은 문제가 있습니다.

오히려 메시지를 표시하는 HTML5 위젯에 결과를 재생하는 것보다 어떤 소리 "(404) 오류가 : 어머이 소리를 찾을 수 없습니다"

나는 또한 유튜브 API를 사용하고 쉽게 만드는의 OnError 이벤트가 오류를 처리하고 내 특별한 경우에는 재생 목록의 다음 트랙으로 건너 뜁니다.

문서 및 StackOverflow를 자세히 살펴본 결과, SoundCloud의 일반적인 사용 사례를 처리하는 방법에 대한 언급이없는 것에 놀랐습니다.

SC HTML5 위젯에서 이벤트 바인딩을 사용하지만 오류 이벤트에 대한 언급이 없습니까 ??

그래서 문제는 구체적으로 어떻게 404를 트랩하고 사용자 지정 코드를 실행할 수 있습니까?

대단히 멋진 API를 가져 주셔서 감사합니다.

+0

안녕하세요! 귀하의 의견을 보내 주셔서 감사 드리며, 불행히도 귀하가 옳았으며 지금 당장 위젯 API에 그러한 훅이 없습니다. 우리는이 기능 요청을 트래커에 추가했습니다. –

+0

정말 고마워. SoundCloud로 사용자 지정 재생 목록을 만드는 유일한 프로그래머 여야합니다. 다른 유사한 앱도 트랙에서 중지되었을 것이기 때문입니다. 내 OCD 베타 테스터들이 계속해서 내 관심을 끌기 위해 다음 패치/롤아웃을 위해이 우선 순위 # 1을 만드시기 바랍니다. :) – Krafty

+0

@gryzzly 이번 호부터 9 개월이 넘었습니다. 지적했다. 나는 현재 같은 문제에 직면 해있다. 이 문제를 해결할 계획이 있습니까? 해결 방법을 권장 할 수 있습니까? –

답변

0

SoundCloud HTML5 위젯은 오늘 SC.Widget.Events.ERROR 이벤트를 지원합니다.

오류가 잡히면 할 수 있습니다

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

오류 이벤트는 내가 아는 한 오류 메시지 또는 기타 세부 사항을 제공하지 않습니다.

+1

404 오류가 위젯 오류 이벤트를 발생시키지 않습니다.이 해결 방법으로 문제를 해결할 수 없습니다. –

3

나는이 같은 문제를 안고 해결 방법을 찾았다. 함수 내부에서 위젯을 초기화하고 함수 또는 청취 또는 오류 이벤트에서 clearTimeout()을 시작하여 setTimeout()을 수행합니다. 그러면 트랙이 재생되거나 오류가 발생하면 이벤트 리스너와 함께 처리 할 수 ​​있습니다. 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 
    }); 
} 

완벽하지는 않지만 위젯을 렌더링하지 않는 모든 트랙에서 기능을 수행 할 수 있습니다.