2015-10-03 2 views
-1

Я использую следующий код (написанный моим другом, я новичок в JS), чтобы создать несколько фреймов с различными видеороликами YouTube, которые затем я могу связать с внутри текста с помощью функции seekTo (т) -JS - остановка нескольких видеороликов YouTube, когда другой начинает играть

var players = []; 

function onYouTubeIframeAPIReady() { 
    YTready() 
} 

function createPlayer(ref, divID, videoID) { 
    players[ref] = new YT.Player(divID, { 
     height: '360', 
     width: '640', 
     videoId: videoID, 
     events: {} 
    }); 
} 

function jumpToTimecode(ref,t){ 
    for(var i=0;i<players.length;i++){ 
     if(i!=ref){ 
      players[i].stopVideo() 
     } 
    } 
    players[ref].seekTo(t) 
    players[ref].playVideo() 
}  

Она включает в себя способ остановить все другие видео, когда пользователь нажимает на ссылку. То, что я хотел бы сделать, это добавить функцию, которая будет делать то же самое (остановить все остальные видео на странице), если пользователь просто нажимает кнопку воспроизведения на одном из игроков YouTube.

Я думал об определении события onStateChange: onPlayerStateChange в функции createPlayer, а затем добавлении функции, которая при любом из игроков меняет свое состояние на воспроизведение // if (event.data == 1) // будет охватывать всех игроков и останавливать любые, которые не были нажаты. Я не уверен, однако, как ссылаться на игрока, который был нажат (так как это может быть любой из них, поэтому я не знаю его «ref» значение заранее).

Или это неправильный способ приблизиться к этому? Любая помощь будет очень оценена.

+0

Кто-нибудь? Спасибо! – BorisG

ответ

-1

Хорошо, я решил это (с помощью моего друга).

function onPlayerStateChange(event) { 
    if(event.data == 1) { 
     var ref = event.target.f.id 
     for(var i=0;i<players.length;i++){ 
     if(players[i].f.id != ref){ 
      players[i].stopVideo() 
     } 
     } 
    } 
} 

с event.target.f.id является уникальным идентификатором данным (от меня) к игроку, как он создан.