当另一个播放时停止任何嵌入的YouTube iframe

问题描述:

我在我的页面中嵌入了大约10个YouTube iframe,所有这些都使用他们自己的自定义播放/暂停按钮。我已经使用这个解决方案,开始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://*.com/a/38405859/1798756,但我想我需要通过JS创建播放器,这样我才能创建自定义播放/暂停按钮。

在此先感谢您的帮助!

+3

可能重复[暂停YouTube iframe嵌入播放另一个时](http://*.com/questions/14942916/pause-youtube-iframe-embed-when-playing-another) – Dekel

+0

是的,我已经研究过这个解决方案,在我的文章中提到过,但我正在尝试添加两个以上的YouTube iframe,但并不确定最佳方式。 – user1798756

+0

使用班级而不是身份证号码 – Dekel

创建播放器后,将它们推到数组上。

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是一个属性(字符串))

现在,当用户播放你只是暂停所有给定的球员除了另外一个正在播放(ID其中你stopVideo获得)。既然你有ID很容易

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/

如果不通过脚本创建的球员而只是嵌入的I帧,然后通过vbence提到this答案是不够的,下面是与改进演示通过Jennie

例建议: - http://jsfiddle.net/fyb7fyw1/

所有学分给各自的原作者

+0

这太棒了!非常感谢! – user1798756

+0

我相信我必须通过脚本创建球员,以便我可以附加自定义播放/暂停按钮。或者我错了? – user1798756

+2

是的,你可以使用任何一种方式。对于基于脚本的播放器,它只是'player1.playVideo();'和'player1.pauseVideo();'。但是如果你自己嵌入,那么你可以让播放器数组全局并调用函数在任何球员匹配你的按钮的角色像[这一个](http://jsfiddle.net/3sx5gprs/) – Viney