2015-02-11 117 views
1

您好我想使用的fancybox在我提出包含视频的网页,像影片画廊,我的意图是要在链接的YouTube视频。的JQuery的fancybox有关iframe问题(PHP)

的问题,我得到它只是通过链接到年龄链接一个正常的a标签会做,没有别的事情发生。

这是我用来生成视频的代码。

while ($row = mysqli_fetch_assoc($result)){ 
     echo " 
      <div class='portalVideo'> 
        <a class='fancybox fancybox.iframe' href='https://www.youtube.com/watch?v=DB7jsjt4Uec'> 
         <h3> 
          <strong>".$row["VideoName"]."</strong> 
         </h3> 
        </a> 
      </div>"; 
    } 

我所有的视频链接是从数据库中抽取,然后作为一个文本链接,点击时“应该”打开iframe显示在页面上。唯一不起作用的是iframe。其他所有内容都会正确显示并显示。

我已经正确地包含了这些文件,并且它们正确链接到资源。只为巩固见下文。

<script type="text/javascript" src="scripts/jquery.fancybox-1.3.4.pack.js"></script> 
<link rel="stylesheet" type="text/css" href="css/jquery.fancybox-1.3.4.css"> 

基于关闭this stack overflow post我试图解决它。我的代码包含下面的头标记下面的jquery。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('a.fancybox').fancybox(); 
    }); 
</script> 

回答

1

你有两个(无PHP相关的)问题:

1)。这的YouTube格式:

https://www.youtube.com/watch?v=DB7jsjt4Uec 

....不是一个iframe因为很有可能它含有DENYX-Frame-options响应头的支援。您可能需要将其转换成嵌入格式,如:

https://www.youtube.com/embed/DB7jsjt4Uec 

2)。特殊类fancybox.iframe仅在fancybox v2.x中受支持,但您似乎正在使用fancybox v1.3.x。所以你宁可使用iframe或添加API选项

type: "iframe" 

...您的自定义的fancybox初始化脚本。

既然你是从数据库中提取的视频链接,好消息是,你不必在你的PHP代码,但只有在你的jQuery代码就像改变什么:

jQuery(document).ready(function ($) { 
    $(".fancybox").each(function (i) { 
     // change links on the fly to embed format 
     this.href = this.href.replace(new RegExp("watch\\?v=", "i"), 'embed/') + "?autoplay=1"; 
    }).fancybox({ 
     // API options 
     type: "iframe" // needed for videos embed format 
    }); 
}); // ready 

通知我我将?autoplay=1添加到新的href,但如果您希望您的视频autoplay曾经在fancybox的iframe中一次,那么这是可选的。

JSFIDDLE