3
var ytplayer = document.getElementById("movie_player"); 
ytplayer.addEventListener('onStateChange', 'onPlayerChange'); 

function onPlayerChange(newState) { 
    alert('do something at least...'); 
    if(newState == 0) { 
    alert('movie has stopped'); 
    } 
} 

Google 크롬 확장 프로그램으로 YouTube 이벤트를 듣는 방법입니다. 영화가 끝나야한다고해도 전혀 오류가되지 않습니다. 적어도 상태가 변경되면 누가 잘못되었는지 아는 사람 있습니까? 콘솔에서 오류가 발생하지 않습니다.크롬 확장 프로그램 - YouTube 이벤트 수신

+0

당신은이 일을하고 있습니까 ** 후 **는 SWF 개체가 DOM 안에? – buddhabrot

+0

** swf **가로드 될 때까지 어떻게 기다릴 수 있습니까? "DOMContentLoaded"만큼 충분하지 않습니까? – SinistraD

답변

3

플레이어가 플래시이기 때문에 코드가 Firefox에서 잘 작동합니다. 그러나 Chrome은 HTML5를 지원하며 플레이어는 HTML5 동영상 플레이어입니다. 따라서 "movie_player"id를 가진 요소가 없습니다. 동영상 플레이어가 Chrome에서 플래시로 작동하는지 확인 하시겠습니까? 컨텍스트 메뉴에서 비디오를 마우스 오른쪽 단추로 클릭하고 플레이어 정보를 봅니다. More details about YouTube HTML5 Player.

Youtube HTML5 플레이어는 현재 시험 단계에 있으므로 사용자의 플레이어 모드를 감지하고 적어도 YT가 HTML5를 완전히 사용하도록 폴백을 추가해야합니다.

+0

당신의 권리는, "javascript : ..."로 쓰면 작동하지만, 파이어 폭스 확장 기능으로는 (OP와는 반대로, 파이어 폭스 확장 기능을 개발하고 있지만 거의 동일해야합니다.). 세 번째 (부울) 매개 변수가 필요하고 addEvenListener의 두 번째 매개 변수는 콜백이 될 수 있지만 이벤트는 실행되지 않으며 다른 오류는 발생하지 않습니다. – SinistraD

1

HTML5 video 요소는 자체 이벤트를 발생시킵니다. 지금은 (이 ID를 가지고 있지 않기 때문에)이 클래스 이름입니다에서 얻을 수있는 가장 쉬운 방법은 다음과 같습니다

var videoElement = document.getElementsByClassName('video-stream')[0]; 

비디오 요소는 here in the HTML5 spec을 나열 찾을 수있는 이벤트의 무리, 화재. 예를 들어

:

videoElement.addEventListener('pause', function(){ alert('paused!'); }) 
관련 문제