好的,我已经安装了FB 2.0.x,非常好。但是,我有一个页面,其中有4个视频使用JW播放器。目前,当您单击链接时,它会运行一个函数来打开fancybox实例。 fancybox是一组HTML代码。在html代码里面是一个带有id的div(每个div / video都是唯一的)。然后,它添加了flashvars,params和属性。功能如下:
function show_modelpopup(id,title,filepath,base_url) {
var flashvars = { file: base_url+"uploads/videos/original/"+filepath, autostart:'true', skin: base_url+'js/skin.zip'};
var params = { allowfullscreen:'true', allowscriptaccess:'always', wmode: 'transparent' };
var attributes = { id: id+'player', name: id+'player' };
swfobject.embedSWF(base_url+'mediaplayer/player.swf','container'+id, 480, 385, '9.0.115', 'false', flashvars, params, attributes, flashloaded);
}
当设置flashvars,params和属性时,它运行swfobject.embedSWF,最后一个选项是加载视频时运行的函数:
function flashloaded() {
jQuery('#shadowbox_archives').fancybox({
padding: 10,
type: 'html',
height: 520,
width: 600
});
jQuery.fancybox.open(jQuery('#shadowbox_archives'));
}
这一切都很有效。它加载窗口,你看到Flash播放器。但是,当您单击播放按钮时,它会显示“无法加载请求的内容。请稍后再试。”。我在Firefox上使用firebug来控制日志,我验证了flv文件路径是否正确。事实上,我将主页设置为显示相同的视频,但不在fancybox内。 swfobject js的输出如下:
Fancybox Popup:
<object id="45player" width="480" height="385" type="application/x-shockwave-flash" name="45player" data="http://www.green-scene.com/mediaplayer/player.swf">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="wmode" value="transparent">
<param name="flashvars" value="file=http://www.green-scene.com/uploads/videos/original/video_45_1318559535.flv&autostart=true&skin=http://www.green-scene.com/js/skin.zip">
</object>
主页(非fancybox):
<object id="45player" width="480" height="385" type="application/x-shockwave-flash" name="45player" data="http://www.green-scene.com/mediaplayer/player.swf">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="wmode" value="transparent">
<param name="flashvars" value="file=http://www.green-scene.com/uploads/videos/original/video_45_1318559535.flv&autostart=true&skin=http://www.green-scene.com/js/skin.zip">
</object>
主页没有问题。但是fancybox确实如此。那我错过了什么?
感谢您的帮助!
更新刚刚做出有趣的发现。如果我单击播放器控制栏中的按钮以扩展到全屏,它将全屏显示,我可以单击播放实际播放它。如果我单击按钮返回正常大小(或点击esc),它将继续在fancybox中播放。但是如果我尝试点击暂停,它就会消失并给我相同的错误信息。
UPDATE#2 关闭上面的Internet Explorer,它运行得很好。但Firefox和Safari在上面给出了同样的错误。这令人难以置信。
更新#3 当影子框打开时,我能够让视频自动播放,但现在您无法暂停或在Mac上的Firefox或Safari中全屏显示。但IE 8/9仍然可以正常工作。
答案 0 :(得分:1)
好的,我查看了你的页面,我看到每个拇指都会触发一个功能点击:
onclick="return show_modelpoup('//parameters')"
位于archives.js文件内的函数show_modelpoup()
通过jQuery html()构建带有id="shadowbox_archives"
的DIV的内容
jQuery('#shadowbox_archives').html();
但也会将Fancybox绑定到同一个选择器
jQuery('#shadowbox_archives').fancybox();
...稍后,同样的函数使用API方法$.fancybox.open()
触发Fancybox(没有影子框)......到目前为止一直很好!?!?
这里发生的事情是Fancybox内部的实际内容是带有id="shadowbox_archives"
的DIV(也绑定到Fancybox),因此每次点击此类DIV内的任何部分时,您的swf控件或其他地方(即使在空白区域)它会再次尝试触发Fancybox(此时没有指示内容应该是什么)因此错误“无法加载请求的内容。请稍后再试。”
将Fancybox绑定到将在Fancybox中打开的相同内容(选择器)会产生循环效果,因此您需要重新制定show_modelpoup()
函数以更改它,
...或者您可能只需要在加载Flash内容后直接触发Fancybox的方式修改flashloaded()
函数(在show_modelpoup()
内),例如:
function flashloaded() {
jQuery.fancybox({
href: '#shadowbox_archives',
padding: 10,
type: 'html',
height: 520,
width: 600
});
// jQuery.fancybox.open(jQuery('#shadowbox_archives'));
}
请注意,我注释掉了API方法$.fancybox.open()
<强>更新强>:
由于您使用的是内联内容,因此flashloaded()
函数应如下所示:
function flashloaded() {
jQuery.fancybox({
href: '#shadowbox_archives',
autoSize: false,
padding: 10,
type: 'inline', // no html
height: 520,
width: 600
});
// jQuery.fancybox.open(jQuery('#shadowbox_archives'));
}