Fancybox返回"无法加载请求的内容.请稍后再试."

Bri*_*ian 7 javascript debugging jquery fancybox

使用的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>
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 7

你有什么<a>用能够对S class="fancybox"rel="fancyvideo"?如果你这样做,你将把Fancybox绑定到那些元素两次,而Fancybox可能不喜欢这样.试着拿出这个:

$("a.fancybox").fancybox({
    'hideOnContentClick': true
});
Run Code Online (Sandbox Code Playgroud)

看看第二个就到底会发生什么.

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

type: 'swf'
Run Code Online (Sandbox Code Playgroud)

在你的Fancybox绑定中,这就是<object><embed>...</embed></object>东西的来源.然而,href在一个普通的YouTube视频观看HTML页面的点,并href最终作为该src属性<embed>.嵌入YouTube视频的网址与视频的HTML网页不同,这可能是您问题的根源.

尝试替换href看起来像这样:

http://www.youtube.com/watch?v=QmVvgSfdmJQ
Run Code Online (Sandbox Code Playgroud)

像这样一个:

http://www.youtube.com/embed/QmVvgSfdmJQ
Run Code Online (Sandbox Code Playgroud)

第一个是YouTube的纯HTML页面,第二个是可嵌入的SWF.

更新2:您正在使用的示例是针对Fancybox 1.0.0,但您使用的是1.3.4,1.0.0对YouTube有一些特殊检查,这些检查在以后的版本中不存在:

//...
} else if (url.match(/youtube\.com\/watch/i)) {
//...
Run Code Online (Sandbox Code Playgroud)

这是从1.0.0开始,之后的代码else if将HTML页面URL(例如http://www.youtube.com/watch?v=QmVvgSfdmJQ)重写为旧的可嵌入SWF URL(例如http://www.youtube.com/v/QmVvgSfdmJQ).此版本问题还解释了为什么演示生成的HTML不同于您的HTML.

因此,除了其他一切之外,您还有一些版本问题.