2011-03-30 1 views
2

.pause() 메서드로 오디오 재생을 중지하고 .currentTime = 0으로 설정 한 다음 마지막으로 .play() 메서드를 다시 호출하면 스크래치가 들립니다. 1 초 위치에서 시작하지만 0에서 시작해야합니다! 내 코드 :html5 오디오 중지 및 재생 다시 시작 문제

HTML :

<audio id="sound" preload="auto" autobuffer> 
    <source src="a.mp3" /> 
</audio> 

JS : 나는이 기능 eventdriven를 호출하는 경우

var sound = $('#sound')[0]; 

function playSound(){ 
    sound.pause(); 
    sound.currentTime = 0; 
    sound.play(); 
} 

때때로 위의 오류가 occures 설명했다.

아이디어가 있으십니까? 고마워.

답변

2

코드가 좋아 보인다. 다른 브라우저에서 사용해 보셨습니까? HTML5는 아직 최종 단계가 아니며 브라우저 공급 업체가 구현 작업을하고 있습니다. 어쩌면 버그일까요?

+1

FF4 오페라 사파리와 크롬에서 시험해 보았습니다 :) 같은 오류 @ jPlayer, 그래서 내 눈에, 그것의 버그 atm. 하지만 반대로 확신 할 준비가 된 사용자 : – ayk

+0

Chrome의 경우 최신 (12.0.742.0 현재 4/21/2011) 개발 채널을 사용해보세요. 그래도 문제가 발생하면 http://crbug.com에서 버그를 제기하십시오. –

0

시도해보십시오 ... 실제로 코드에서 이벤트를 호출하지 않습니다. 당신은 이벤트를 호출, 완전히 새로운 세계가 당신이 개체와 함께 할 수있는 측면에서 열립니다 ...

내가 뭘하는지는 사용자가 오디오 요소를 클릭하고 재생을 시작할 때 타이머를 시작하는 것입니다 . 그런 다음 매 1 초마다 45 초가 경과했는지 확인하는 시간을 확인하고 있습니다. 그것이 있다면, 이것은 내가 보여주고있는 오디오의 평가판이며 currentTime을 0으로 재설정 한 다음 비디오를 일시 중지하여 루핑을 유지하지 않습니다. 그런 다음 간격을 지 웁니다.

당신이하고있는 것과 내가하고있는 것의 차이점은 함수 매개 변수에있는 그 작은 'e'에 모두 있습니다. 스크립트의 어딘가에 console.log(e);을 넣은 다음 Firebug 또는 다른 웹 기반 콘솔을 열면 반환되는 값을 클릭하고 이벤트 객체에서 액세스 할 수있는 모든 정보를 볼 수 있습니다. 거기에서 오디오 플레이어로 커피 한잔을 만들 수 있습니다. 좋아, 그렇지 않을 수도 있지만, 의지에 굴복하게 만들 수 있습니다.

$('audio').click(function(e) { 
    window.setInterval(function(){ 
     if(e.currentTarget['currentTime'] > 45){ 
     $(e.currentTarget['currentTime'] = 0); 
     $(e.currentTarget.pause()); 
     clearInterval(); 
     } 
    }, 1000); 
}); 

=========================================== ===============