Badr Hari
Badr Hari

Reputation: 8424

Chrome extension - listening to YouTube events

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');
  }
}

This is how I try to listen to YouTube events with a Google Chrome extension. It doesn't give me any error at all, even though it should when the movie has finished. Or at least when the state has changed. Does anyone know what is wrong? Console doesn't give me any errors.

Upvotes: 4

Views: 1057

Answers (2)

s4y
s4y

Reputation: 51735

The HTML5 video element fires its own events. Right now, it looks like the easiest way to get at it is by class name (since it doesn’t have an id):

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

Video elements fire a bunch of events, which you can find listed here in the HTML5 spec.

For example:

videoElement.addEventListener('pause', function(){ alert('paused!'); })

Upvotes: 2

Fatih Acet
Fatih Acet

Reputation: 29549

Your code works fine on Firefox because the player is Flash. However Chrome supports HTML5 and the player is HTML5 Video Player. So there is no element which has "movie_player" id. Are you sure your video player is Flash on Chrome. Right click the video and see player info in context menu. More details about YouTube HTML5 Player.

Youtube HTML5 player is currently in trial, so you should detect user's player mode and add a fallback for it at least YT completely use HTML5.

Upvotes: 3

Related Questions