Fancybox返回“请求的内容无法加载。请稍后再试。”

7
使用Fancybox在模态框中播放Youtube视频的技巧。

我的问题是始终出现“无法加载请求内容。请稍后再试。”

模态框弹出,所以我知道脚本正在运行,这可能是我的API调用出了问题...这是我的调用:
<script type="text/javascript">
$(document).ready(function() {

            /* This is basic - uses default settings */

            $("a.fancybox").fancybox({
                'hideOnContentClick': true
            });

            /* This is a non-obtrustive method for youtube videos*/

            $("a[rel=fancyvideo]").fancybox({
                overlayShow: true,
                frameWidth:640,
                frameHeight:360,
            });
        });
</script>
4个回答

7

您是否有任何同时具有 class="fancybox"rel="fancyvideo" 属性的 <a> 元素?如果有,则会将 Fancybox 绑定到这些元素两次,这可能会导致 Fancybox 不兼容。请尝试删除其中一个:

$("a.fancybox").fancybox({
    'hideOnContentClick': true
});

当第二个内容放置时,请看看会发生什么。

更新: 奇怪的是,演示(http://chadly.net/demos/video-lightbox.html)生成的HTML与您的页面不同,演示构建了一个<object data = ...>,但您的页面构建了一个<object><embed src="youtube-url">。你的意思是:

type: 'swf'

在您的Fancybox绑定中,<object><embed>...</embed></object>是从那里来的。然而,href指向一个普通的YouTube视频查看HTML页面,该href最终成为<embed>src属性。嵌入YouTube视频的URL与视频的HTML页面不同,这可能是您问题的来源。
尝试替换以下类似于此的href
http://www.youtube.com/watch?v=QmVvgSfdmJQ

使用下面这个示例:

http://www.youtube.com/embed/QmVvgSfdmJQ

第一个是YouTube的普通HTML页面,第二个是可嵌入的SWF。
更新2:你正在使用1.3.4,而示例是针对Fancybox 1.0.0的,1.0.0具有一些特殊的检查YouTube的功能,在后续版本中不存在。
//...
} else if (url.match(/youtube\.com\/watch/i)) {
//...

这段代码来自1.0.0版本,之后的else if重写了HTML页面的URL(例如http://www.youtube.com/watch?v=QmVvgSfdmJQ),将其转换为旧的可嵌入SWF URL(例如http://www.youtube.com/v/QmVvgSfdmJQ)。这个版本问题也解释了为什么演示产生了与您不同的HTML。

因此,在其他所有问题之上,您还有一些版本问题。


好的尝试,不幸的是,我已经尝试过了。没有用。我在rel上没有使用相同的类来播放YouTube视频。同时删除了第一个Fancybox调用,但并没有改变任何东西。您可以在此处查看网站:http://anasmadance.com.s66112.gridserver.com/about/repertoire/ ...单击第一个大标题div以展开它,然后寻找“观看视频”。 - Brian
@Brian:我稍微折腾了一下,添加了一个更新,可能(也可能不)有用。 - mu is too short
@Brain:但是等等!还有更多有趣的版本问题需要解决。如果你好奇,可以查看我的第二个更新,难怪会有混淆。 - mu is too short

2

请检查您是否已经包含了 jquery.fancybox-media.js

<script type="text/javascript" src="jquery.fancybox-media.js?v=1.0.0"></script>

1

请使用此示例,不要忘记添加href属性

<a class="fancybox" href="your path for image or other">
  <img src="imagepath">
</a>

1

很遗憾,作者在发布这篇文章时使用的是jQuery 1.3.2之前的版本,所以他的代码是错误的。更新之前,代码根本不起作用,更新后模态框出现了,但是没有视频。 - Brian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接