【问题标题】:Close fancybox popup when youtube video finishyoutube 视频播放完毕后关闭fancybox 弹出窗口
【发布时间】:2014-05-27 11:31:32
【问题描述】:

我在页面加载时弹出了 youtube 视频。

我需要在视频结束后关闭弹出窗口...是否可以集成此脚本?

这是代码:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.fancybox-1.3.1.js"></script>
<link rel="stylesheet" type="text/css" href="jquery.fancybox-1.3.1.css" media="screen"  />

<script type="text/javascript">
    $(document).ready(function() {

        $("#yt").click(function() {
            $.fancybox({
                    'padding'        : 0,
                    'autoScale'      : false,
                    'transitionIn'   : 'none',
                    'transitionOut'  : 'none',
                    'title'          : this.title,
                    'width'          : 880,
                    'height'         : 595,
                    'href'           : this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
                    'type'           : 'swf',
                    'swf'            : {
                        'wmode'              : 'transparent',
                        'allowfullscreen'    : 'true'
                    }
                });
            return false;
        });
    });
    $('#foo').bind('click', function() {
          alert($(this).text());
        });
        $('#foo').trigger('click');
</script>
</head>

<body onload='$("#yt").trigger("click");'>

    <h1>fancybox example</h1>
    <p><a id="yt" title="" href="https://www.youtube.com/watch? v=y0vh14W4iTM&amp;fs=1&amp;autoplay=1"></a></p>

我报告这个讨论。

FancyBox and Youtube API events

我没有练习过 javascript,有人可以帮助我吗?

【问题讨论】:

标签: javascript jquery youtube youtube-api fancybox


【解决方案1】:

这是 Fancybox-Youtube-Cookie-Autoclose-Autopopup 的完整脚本 只需下载 css 中所需的图像,将它们放在根目录下的 /fancybox 文件夹中,然后替换为您的视频 ID。确实有效,经过全面测试...

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/helpers/jquery.fancybox-media.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.css" media="screen" />
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script src="http://www.youtube.com/player_api"></script>
 <script type="text/javascript"> 
// detect mobile devices features
var isTouchSupported = 'ontouchstart' in window,
    isTouchSupportedIE10 = navigator.userAgent.match(/Touch/i) != null;
function onPlayerReady(event) {
    if (!(isTouchSupported || isTouchSupportedIE10)) {
        // this is NOT a mobile device so autoplay     
         event.target.playVideo();
    }
}
function onPlayerStateChange(event) {
    if (event.data === 0) {
        $.fancybox.close();
    }
}
function onYouTubePlayerAPIReady() {
$(function() {
    if ($.cookie('welcome_video')) {
        // it hasn't been three days yet
    } else {
        // set cookie to expire in 3 days
        $.cookie('welcome_video', 'true', { expires: 3});
    $(document).ready(function () {
        $.fancybox.open({
		href: "https://www.youtube.com/embed/qm1RjPM9E-g", /*YOUR VIDEO ID*/
            helpers: {
                media: {
                    youtube: {
                        params: {
                            autoplay: 1,
                            rel: 0,
                            // controls: 0,
                            showinfo: 0,
                            autohide: 1,
                        }
                    }
                },
                buttons: {}
            },
            beforeShow: function () {
                var id = $.fancybox.inner.find('iframe').attr('id');
                var player = new YT.Player(id, {
                    events: {
                        onReady: onPlayerReady,
                        onStateChange: onPlayerStateChange
                    }
                });
            }
        }); // fancybox	
    }); // ready
   } // cookie else ready
}); // function for cookie
} // youtube API ready
</script>

【讨论】:

    【解决方案2】:

    您需要在页面上有一个 JS 播放器的实例。然后,您可以针对播放器状态更改。 HERE 是您需要的信息的链接。

    您可以设置一个脚本在达到您的状态时运行,这将关闭您的弹出框。

    【讨论】:

      猜你喜欢
      • 2013-08-13
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 2012-08-12
      • 2014-04-10
      • 2014-09-30
      • 2016-02-02
      • 1970-01-01
      相关资源
      最近更新 更多