2011-12-04 65 views
2

好的,我已经安装了FB 2.0.x,它非常好。但是,我有一个使用JW Player的4页视频页面。目前,当你点击一个链接时,它会运行一个函数来打开一个fancybox实例。 fancybox是一组HTML代码。在html代码里面是一个带有id的div(每个div/video都是唯一的)。然后,它添加了flashvars,params和属性。功能如下:Fancybox swfobject“请求的内容无法加载,请稍后再试。”

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); 
} 

而当Flash变数,则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弹出窗口:

<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确实。那么我错过了什么?

我感谢你的帮助!

UPDATE有趣的发现只是做。如果我的播放器控制栏单击按钮扩展到全屏幕,它会进入全屏模式,我可以点击发挥真正发挥它。如果我点击按钮返回到正常大小(或点击esc),它将继续在fancybox中播放。但是,如果我尝试点击暂停,它会消失,并给我相同的错误信息。

UPDATE#2原来,Internet Explorer喜欢上述,它工作得很好。但是Firefox和Safari给了我上面的同样的错误。这是令人难以置信的。

UPDATE#3当影子盒打开时,我能够将视频自动播放,但现在无法在Mac或Firefox上暂停或全屏播放。但IE 8/9仍然工作得很好。

+0

看到一个问题的链接会很有趣,否则我们会猜测 – JFK

+0

当然。首先到这里:http://www.green-scene.com/index_demo.php并点击顶部的Login。使用以下登录信息:helpme/stackoverflow。然后去这里:http://www.green-scene.com/index_demo.php/myscene/archives。你会看到4个视频大拇指。 –

回答

1

OK,我看看你的网页,我看到每一个拇指触发的onclick功能:

onclick="return show_modelpoup('//parameters')" 

功能show_modelpoup(),它位于archives.js文件中建立一个DIV与id="shadowbox_archives"内容通过jQuery HTML()

jQuery('#shadowbox_archives').html(); 

也结合的fancybox到相同的选择

jQuery('#shadowbox_archives').fancybox(); 

...后来,同样的功能触发的fancybox(无太极拳)与API方法$.fancybox.open() ...到目前为止,一切顺利!?!?

这里发生的事情是,Fancybox内部的实际内容是一个id="shadowbox_archives"(也绑定到Fancybox)的DIV,所以每次点击这种DIV内部的任何部分,无论是你的swf控件或其他地方(甚至在一个空的空间),它会尝试再次触发的fancybox(没有指示的内容应该是什么这个时候),因此错误“请求的内容不能被加载,请稍后再试。

绑定的fancybox的相同的内容(选择器)将在Fancybox中打开创建一个循环效果,所以你需要重新制定你的show_modelpoup()函数来改变它,

...也许你只需要修改flashloaded()功能(内show_modelpoup())的方式,它不直接解雇的fancybox Flash内容已经被加载后,如:

function flashloaded() { 
    jQuery.fancybox({ 
     href: '#shadowbox_archives', 
     padding: 10, 
     type: 'html', 
     height: 520, 
     width: 600 
    }); 
    // jQuery.fancybox.open(jQuery('#shadowbox_archives')); 
} 

请注意,我注释掉API方法$.fancybox.open()

UPDATE

由于您使用内嵌的内容,您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')); 
} 
+0

好的。我想我明白你在做什么。但是,我无法在不添加api打开方法的情况下甚至打开fancybox。所以我按照你的建议对它进行了修改,现在当我点击一个缩略图时,我得到了这个错误。在我收到消息之前我意识到的一件事是,如果我单击ShadowBox内部除填充边缘之外的任何地方,它将执行与点击视频相同的操作。所以就好像顶层有一层。但是你说的是有道理的,因为IE不喜欢div“点击”事件,但是FF和Safari都这样。我很感谢你看看。 –

+0

好吧,我只是注意到我忽略了一些东西....替换:键入:'html'类型:'inline'...并添加autoSize:false到您的API选项,我认为类型:html正在创建问题 – JFK

+0

您应该设置类型:'html'以及API选项“content”,只有如下内容:'硬编码内容' – JFK

相关问题