2016-12-31 9 views
4

Я внедряю около 10 YouTube-фреймов на моей странице, все с их собственными кнопками воспроизведения/паузы. Я использовал это решение начать http://jsfiddle.net/buuuue/dzroqgj0/, но я не уверен, как настроить этот кусок кода, чтобы остановить любое другое видео, которое играет, если начинается еще один ...Остановите любой встроенный YouTube iframe, когда другой сыграно

function stopVideo(player_id) { 
    if (player_id == "player1") { 
     player2.stopVideo(); 
    } else if (player_id == "player2") { 
     player1.stopVideo(); 
    } 
} 

Например, если игрок 1 в данный момент играет, и проигрывается игрок 3, я бы хотел, чтобы игрок 1 прекратил играть. Я также изучил это решение https://stackoverflow.com/a/38405859/1798756, но я думаю, что мне нужно создать игроков через JS, чтобы я мог создавать пользовательские кнопки воспроизведения/паузы.

Заранее благодарим за любую помощь!

+3

Возможный дубликат [Пауза YouTube iframe embed при воспроизведении другого] (http://stackoverflow.com/questions/14942916/pause-youtube-iframe-embed-when-playing-another) – Dekel

+0

Да, я Мы рассмотрели это решение, о которых я упоминал в своем посте, но я пытаюсь добавить более двух YouTube-фреймов и не совсем уверен, что это лучший способ сделать это. – user1798756

+0

Используйте класс вместо id – Dekel

ответ

3

После создания игроков нажмите их на массив.

var vids =[]; 
    player1 = new YT.Player('player1', { 
    //stuff 
    }); 
    vids.push(player1); 

    player2 = new YT.Player('player2', { 
    // stuff 
    }); 
    vids.push(player2); 

    .... 
    .. 
    playerN = new YT.Player('playerN', { 
    // stuff 
    }); 
    vids.push(playerN); 

ID Каждый объект игрока может получить доступ к своей собственности a.id (a сам объект, id это свойство (строка))

Теперь, когда пользователь играет данный игрок, вы должны просто приостановить все другой, за исключением того, воспроизводимого (идентификатор которого вы получаете в stopVideo) .Since у вас есть идентификатор это легко

function stopVideo(player_id) { 
    for(var i=0;i<vids.length;i++){ 
    if (player_id !=vids[i].a.id)  
     vids[i].stopVideo(); 
    } 
} 

Пример: - http://jsfiddle.net/4t9ah1La/

Если вы не создаете игрок с помощью сценариев, а просто встраивания плавающих фреймов, то this ответа упомянутого vbence достаточно, ниже демы, что с улучшением предложили Jennie

Примера: - http://jsfiddle.net/fyb7fyw1/

Всех кредиты соответствующим авторам

+0

Это замечательно! Спасибо! – user1798756

+0

Я считаю, что мне нужно создать игроков через скрипт, чтобы я мог прикрепить пользовательские кнопки воспроизведения/паузы. Или я ошибаюсь? – user1798756

+2

Да, вы можете использовать любой из способов. Для проигрывателя на основе скриптов это просто 'player1.playVideo();' и 'player1.pauseVideo();'. Но если вы встраиваете , то вы можете сделать игровой массив глобальным и вызвать функции на любом игроке соответствует роль вашей кнопки, как [этот] (http://jsfiddle.net/3sx5gprs/) – Viney