停止所有视频,当一个新的视频播放 [英] stop all videos when a new video is played

查看:196
本文介绍了停止所有视频,当一个新的视频播放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要一些帮助与YouTube API和嵌入式视频。我想停止所有iframe的视频(这里我只取3,但也有几部影片)当前页面上运行的点击一个新的YouTube视频时。在一个时间点,只有一个iframe的YouTube视频应该运行。我已经thruogh文档[https://developers.google.com/youtube/js_api_reference][1],并能写到这里...

更新:

 <!DOCTYPE HTML>
< HTML和GT;
    < HEAD>
        <标题>< /标题>
        < META HTTP-EQUIV =Content-Type的CONTENT =text / html的;字符集= UTF-8>
        <脚本类型=文/ JavaScript的SRC =htt​​p://www.youtube.com/player_api>< / SCRIPT>
        <脚本类型=文/ JavaScript的>
            VAR的球员;
             功能onYouTubeIframeAPIReady(){
                玩家=新YT.Player('球员',{
                    事件:{
                        'onReady':onPlayerReady,
                        onStateChange':onPlayerStateChange
                    }
                });
            }            VAR做= FALSE;
              功能onPlayerStateChange(事件){
                如果(Event.data中== YT.PlayerState.PLAYING&放大器;&安培;!完成){
                    警报(了hi5);
                    player1.stopVideo();
                    player2.stopVideo();
                    做= TRUE;
                }
               }
        < / SCRIPT>
    < /头>
    <身体GT;
        < D​​IV> TODO写的内容< / DIV>
        < UL类=形象网ID =清单>
            <立GT;
                < IFRAME ID =玩家WIDTH =385HEIGHT =230 src=\"http://www.youtube.com/embed/erDxb4IkgjM?rel=0&wmode=Opaque&enablejsapi=1;showinfo=0;controls=0\" FRAMEBORDER =0的allowFullScreen>&下; / iframe的>
            < /李>
            <立GT;
                &所述; iframe中的id =PLAYER1宽度=385HEIGHT =230 src=\"http://www.youtube.com/embed/wSrA5iQGlDc?rel=0&wmode=Opaque&enablejsapi=1;showinfo=0;controls=0\" FRAMEBORDER =0的allowFullScreen>&下; / iframe的>
            < /李>
            <立GT;
                &所述; iframe中的id =player2宽度=385HEIGHT =230 src=\"http://www.youtube.com/embed/c7b_WLkztXc?rel=0&wmode=Opaque&enablejsapi=1;showinfo=0;controls=0\" FRAMEBORDER =0的allowFullScreen>&下; / iframe的>
            < /李>
        < / UL>
    < /身体GT;
< / HTML>

更新时间:


  1. onStateChange事件没有得到触发(工作)

  2. 在这个例子中,我有3段视频,在现实中它有更多的影片,而不是写onPlayerStateChange每个video..is有可能在功能onPlayerStateChange使用数组的所有videos..and,写播放器[] .stopVideo()和this.playvideo()..这种东西..(需要帮助)
    请参阅本小提琴 http://jsfiddle.net/LakshmiV/kn5Sf/
    请帮助。


解决方案

您可以做这样的事情...

让每一个IFRAME类,以便它可以被确定为YouTube播放器的iframe。
在这里,我已经给yt_players

现在你可以用下面的code ...

 <脚本类型=文/ JavaScript的>
    玩家=新的Array();    功能onYouTubeIframeAPIReady(){
        变种临时= $(iframe.yt_players);
        对于(VAR I = 0; I< temp.length;我++){
            变种T =新YT.Player($(TEMP [I])。ATTR(ID),{
                事件:{
                    onStateChange':onPlayerStateChange
                }
            });
            players.push(T);
        }
    }
    onYouTubeIframeAPIReady();    功能onPlayerStateChange(事件){
        如果(Event.data中== YT.PlayerState.PLAYING){
            变种临时= event.target.a.src;
            VAR tempPlayers = $(iframe.yt_players);
            对于(VAR I = 0; I< players.length;我++){
                如果(玩家[I] .a.src!= TEMP)
                    玩家[I] .stopVideo();
            }
        }
    }
< / SCRIPT>

更新了code ...这应该是对您有所帮助。

看到它在这里... http://jsfiddle.net/anubhavranjan/Y8P7y/

I need some help with Youtube API and embeded videos. I want to stop all iframe videos (here i have taken only 3, but there are several videos)running on the current page when a new youtube video is clicked. At one point of time, only one iframe youtube video should run. I have gone thruogh documentation [https://developers.google.com/youtube/js_api_reference][1] and was able to write till here...

Updated:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="http://www.youtube.com/player_api"></script>
        <script type="text/javascript">
            var player;
             function onYouTubeIframeAPIReady() {
                player = new YT.Player('player', {
                    events: {
                        'onReady': onPlayerReady,
                        'onStateChange': onPlayerStateChange
                    }
                });
            }

            var done = false;
              function onPlayerStateChange(event) {
                if (event.data == YT.PlayerState.PLAYING && !done) {
                    alert("hi5");
                    player1.stopVideo();
                    player2.stopVideo();
                    done = true;
                }
               }
        </script>
    </head>
    <body>
        <div>TODO write content</div>
        <ul class="image-grid" id="list"> 
            <li>
                <iframe id="player" width="385" height="230" src="http://www.youtube.com/embed/erDxb4IkgjM?rel=0&wmode=Opaque&enablejsapi=1;showinfo=0;controls=0" frameborder="0" allowfullscreen></iframe> 
            </li>
            <li>
                <iframe id="player1" width="385" height="230" src="http://www.youtube.com/embed/wSrA5iQGlDc?rel=0&wmode=Opaque&enablejsapi=1;showinfo=0;controls=0" frameborder="0" allowfullscreen></iframe>
            </li>
            <li>
                <iframe id="player2" width="385" height="230" src="http://www.youtube.com/embed/c7b_WLkztXc?rel=0&wmode=Opaque&enablejsapi=1;showinfo=0;controls=0" frameborder="0" allowfullscreen></iframe>
            </li>
        </ul>
    </body>
</html>

UPDATED

  1. onStateChange event is not getting triggered(working)
  2. In this example i have 3 videos, in reality it has more videos instead of writing onPlayerStateChange for each video..is it possible to use an array for all the videos..and in the function onPlayerStateChange, to write player[].stopVideo() and this.playvideo()..something of this sort..(help required) please see this fiddle http://jsfiddle.net/LakshmiV/kn5Sf/ Please help.

解决方案

You can do something like this...

Give every iframe a class so that it can be identified as an iframe for youtube player. Here I have given "yt_players"

Now you can use the below code...

<script type="text/javascript">
    players = new Array();

    function onYouTubeIframeAPIReady() {
        var temp = $("iframe.yt_players");
        for (var i = 0; i < temp.length; i++) {
            var t = new YT.Player($(temp[i]).attr('id'), {
                events: {
                    'onStateChange': onPlayerStateChange
                }
            });
            players.push(t);
        }
    }
    onYouTubeIframeAPIReady();

    function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING) {
            var temp = event.target.a.src;
            var tempPlayers = $("iframe.yt_players");
            for (var i = 0; i < players.length; i++) {
                if (players[i].a.src != temp) 
                    players[i].stopVideo();
            }
        }
    }
</script>

Have updated the code...This should be of help to you.

See it in here...http://jsfiddle.net/anubhavranjan/Y8P7y/

这篇关于停止所有视频,当一个新的视频播放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆