Ответ 1
Вы пробовали (из документации) назначить целое число событию окончания фильма?:
onStateChange Это событие срабатывает всякий раз, когда изменяется состояние проигрывателя. Свойство данных объекта события, которое API передает функция прослушивателя событий задает целое число, соответствующее состояние нового игрока. Возможные значения данных:
-1 (unstarted)
0 (ended)
1 (playing)
2 (paused)
3 (buffering)
5 (video cued).
Когда игрок сначала загружает видео, он будет транслировать нестандартные (-1). Когда видео воспроизводится и готово к воспроизведению, игрок будет транслировать событие, связанное с видео (5). В вашем коде вы можете указать целочисленные значения или вы можете использовать одно из следующих имен: переменные:
YT.PlayerState.ENDED
YT.PlayerState.PLAYING
YT.PlayerState.PAUSED
YT.PlayerState.BUFFERING
YT.PlayerState.CUED
Итак, что-то вроде:
if(event.data==YT.PlayerState.ENDED){
//do stuff here
}