jquery – Fancybox – 视频自动关闭功能

前端之家收集整理的这篇文章主要介绍了jquery – Fancybox – 视频自动关闭功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用fancybox Media.我想在视频完成时,关闭fancybox ..

这是我的代码

  1. $('.fancybox-media').attr('rel','media-gallery').fancybox({
  2. openEffect : 'none',closeEffect : 'none',prevEffect : 'none',nextEffect : 'none',arrows : false,padding : '0',margin: '0',width: '100%',height: '100%',helpers : {
  3. media : {
  4. youtube : {
  5. params : {
  6. autoplay : 1,rel : 0,controls : 0,showinfo : 0,autohide : 1
  7. }
  8. }},buttons : {}
  9. }
  10. });

解决方法

这是配方:

1).将youtube’s player API加载到您的页面中.

2).创建3个功能

> onYouTubePlayerAPIReady – 收听youtube的API:

  1. function onYouTubePlayerAPIReady() { .. }

然后将你的fancybox初始化代码(包括.ready()方法)放在这个函数中,如:

  1. function onYouTubePlayerAPIReady() {
  2. $(document).ready(function () {
  3. $('.fancybox-media').attr('rel','media-gallery').fancybox({
  4. // fancybox API options
  5. ... etc.
  6. }); // fancybox
  7. }); // ready
  8. }

> onPlayerReady – 监听youtube的播放器:

  1. function onPlayerReady(event) {
  2. event.target.playVideo();
  3. }

> onPlayerStateChange – 监听youtube的播放器更改,包括视频结束.这里我们称之为fancybox close方法

  1. function onPlayerStateChange(event) {
  2. if (event.data === 0) {
  3. $.fancybox.close();
  4. }
  5. }

3).现在使用fancybox beforeShow回调将最后两个函数绑定到你的fancybox(youtube)内容,如:

  1. beforeShow: function () {
  2. var id = $.fancybox.inner.find('iframe').attr('id');
  3. var player = new YT.Player(id,{
  4. events: {
  5. onReady: onPlayerReady,onStateChange: onPlayerStateChange
  6. }
  7. });
  8. }

JSFIDDLE

编辑(2014年2月3日):

@fightstarr20说:

This method doesn’t appear to work on iPhone or iPad,any idea why?

好像youtube将iOS设备中播放的视频转换为HTML5格式.不知何故,函数内部的autoplay选项

  1. function onPlayerReady(event) {
  2. event.target.playVideo();
  3. }

…不允许youtube正确转换视频,它只是挂起.

替代解决方案是检测移动设备并仅执行event.target.playVideo();对于桌面代理商,你可以这样做

  1. // detect mobile devices features
  2. var isTouchSupported = 'ontouchstart' in window,isTouchSupportedIE10 = navigator.userAgent.match(/Touch/i) != null;
  3.  
  4. function onPlayerReady(event) {
  5. if (!(isTouchSupported || isTouchSupportedIE10)) {
  6. // this is NOT a mobile device so autoplay
  7. event.target.playVideo();
  8. }
  9. }

请参阅forked JSFIDDLE,它应该适用于iOS和桌面设备.

注意:您可以添加首选设备检测方法.到目前为止,我发现它简单可靠.

猜你在找的jQuery相关文章