javascript - 如何停止同时播放嵌入的 Youtube 视频

标签 javascript jquery youtube youtube-api

SoundCloud 播放器有一个默认功能,当用户启动一个播放器时,它会自动暂停当前正在播放的所有其他播放器。 (例如:http://jsfiddle.net/Vx6hM/)。

我正在尝试使用通过普通嵌入代码动态添加的嵌入式 YouTube 视频来重新创建它。

使用这个:https://stackoverflow.com/a/7513356/938089 还有这个:https://stackoverflow.com/a/7988536/1470827

我能做到这一点:

function chain(){

$('.post').each(function(){
    var player_id = $(this).children('iframe').attr("id");
    var other_player_id = $(this).siblings().children('iframe').attr("id");

    player = new YT.Player( player_id, { 

        events:
            {      
            'onStateChange': function (event) 
                {

                if (event.data == YT.PlayerState.PLAYING) 
                    { callPlayer( other_player_id , 'pauseVideo' );
                     alert('Trying to pause: ' + other_player_id);
                    }            

                }
            }        
    });

});

}

这是一个 JS Bin,它只工作了一半:http://jsbin.com/oxoyes/2/edit

目前,它只调用其中一名玩家。我需要它来暂停除正在玩游戏的玩家之外的所有其他玩家。

此外,欢迎提供任何有关如何清理和/或以不同方式/更好方式进行清理的提示。我对 javascript 还是很陌生,所以我什至不确定我是否以正确的方式处理它。

谢谢!

最佳答案

您最多只能让一名玩家在给定时间玩游戏。与其尝试暂停所有正在播放的内容,不如将其视为尝试暂停正在播放的内容。当然,没有人可以玩。鉴于此,请查看以下代码。您维护一个外部范围变量并在必要时暂停它,同时将其设置为您之后刚开始玩的玩家。

var playerCurrentlyPlaying = null;
function chain(){       
    $('.post').each(function(){
        var player_id = $(this).children('iframe').attr("id");
        player = new YT.Player( player_id, { 
            events:
                {      
                'onStateChange': function (event) 
                    {

                    if (event.data == YT.PlayerState.PLAYING) 
                        { 
                          if(playerCurrentlyPlaying != null && 
                          playerCurrentlyPlaying != player_id)
                          callPlayer( playerCurrentlyPlaying , 'pauseVideo' );
                          playerCurrentlyPlaying = player_id;

                        }            

                    }
                }        
        });
    });
}

关于javascript - 如何停止同时播放嵌入的 Youtube 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12994459/

相关文章:

javascript - JQuery 不会在 Safari 以外的任何浏览器中加载

javascript - 使用 javascript/Jquery 循环对象创建 AND 运算符

javascript - 自动补全 Json

c# - 无法在 C# WebBrowser 中播放任何 YouTube 视频

javascript - 使用 iframe 和 javascript API 让 youtube 视频全屏显示

javascript - jquery 我的完成回调只被调用一次,我不明白为什么

javascript - 分隔列表 Web 界面

php - 执行 A/B 拆分的最理想的跨语言方法是什么?

ios - 上传视频并分享链接 - API?

javascript - 立即播放大尺寸音频文件的问题