0

几乎不用说,这在 Chrome、Firefox 和 Safari 中完美运行。IE(任何版本)是问题所在。

目标:我正在尝试加载 JWplayer,它在 Facebox 弹出窗口中从 S3 加载 FLV。

jQuery(document).ready(function($) {
  $('a[rel*=facebox]').facebox() 
})

HTML(哈姆):

%li#videoGirl
  = link_to 'What is HQchannel?', '#player', :rel => 'facebox'

.grid_8.omega.alpha#player{:style => 'display: none;'}
  :javascript
    var so = new SWFObject('/flash/playerTrans.swf','mpl','640px','360px','0');
    so.addParam('allowscriptaccess','always');
    so.addParam('allowfullscreen','true');
    so.addParam('wmode','transparent');
    so.addVariable('file', 'http://hometownquarterlyvideos.s3.amazonaws.com/whatishqchannel.flv&autostart=true&controlbar=none&repeat=always&image=/flash/video_girl/whatishqchannel.jpg&icons=false&screencolor=none&backcolor=FFFFFF&screenalpha=0&overstretch');
    so.addVariable('overstretch', 'true')
    so.write('player');

问题:

  1. 尽管视频被设置为显示:无;。无论如何它开始播放。
  2. 当点击激活 div 时,IE7 会弹出一个错误大小的空白 div,带有导航(参数设置为不显示导航和洗涤器),并且导航和洗涤器上没有任何按钮工作。IE8 显示正确的大小,但行为相同,导航和洗涤器不起作用,并且屏幕为空白。

我的猜测:
我认为问题在于没有在正确的时间调用 javascript。似乎它正在加载没有 jwplayer 的 facebox。至少我假设。因此导航存在的原因。我认为它没有为此读取 javascript。

4

2 回答 2

0

在实例化 facebox javascript 后,此代码将成功加载 JWplayer。在 IE7 或 IE8 中没有显示视频的问题仍然存在,但 JWplayer 可以正常加载。

HTML:

<a class="flash" href="http://hometownquarterlyvideos.s3.amazonaws.com/whatishqchannel.flv" rel="/flash/video_girl/whatishqchannel.jpg">Flash</a>

Javascript:

$(document).ready(function(){
 // click on flash video link
 $('.flash').click(function(){
  $.facebox('<div id="fbvideo"></div>');
  var so = new SWFObject('/flash/playerTrans.swf','fbvideo','640px','360px','0');
  so.addParam('allowscriptaccess','always');
  so.addParam('allowfullscreen','true');
  so.addParam('wmode','transparent');
  so.addVariable('file', $(this).attr('href'));
  so.addVariable('autostart','true');
  so.addVariable('controlbar','none');
  so.addVariable('repeat','always');
  so.addVariable('image',$(this).attr('rel'));
  so.addVariable('icons','false')
  so.addVariable('screencolor','none');
  so.addVariable('backcolor','FFFFFF');
  so.addVariable('screenalpha','0');
  so.addVariable('overstretch', 'true');
  so.write('fbvideo');
  return false;
 })
})
于 2010-06-22T14:11:39.520 回答
0

这里有几个问题。

第一个问题:SWOBJECT

我认为您看到了不良/不可预测的行为,因为您的 SWFObject 语法有点偏离。使用 SWFObject,您可以:

1.) 使用addParam('flashvars', FLASHVARS),其中FLASHVARS是由&分隔的配置选项串连,即

var so = new SWFObject('/flash/playerTrans.swf','mpl','640px','360px','0');
so.addParam('allowscriptaccess','always');
so.addParam('allowfullscreen','true');
so.addParam('wmode','transparent');
so.addParam('flashvars', 'file=http://hometownquarterlyvideos.s3.amazonaws.com/whatishqchannel.flv&amp;autostart=true&amp;controlbar=none&amp;repeat=always&amp;image=/flash/video_girl/whatishqchannel.jpg&amp;icons=false&amp;screencolor=none&amp;backcolor=FFFFFF&amp;screenalpha=0&amp;overstretch=true');
so.write('player');

或者

2.) 使用一堆 addVariable 语句,即

var so = new SWFObject('/flash/playerTrans.swf','mpl','640px','360px','0');
so.addParam('allowscriptaccess','always');
so.addParam('allowfullscreen','true');
so.addParam('wmode','transparent');
so.addVariable('file', 'http://hometownquarterlyvideos.s3.amazonaws.com/whatishqchannel.flv');
so.addVariable('autostart', 'true');
so.addVariable('controlbar', 'none');
so.addVariable('repeat', 'always');
so.addVariable('image', '/flash/video_girl/whatishqchannel.jpg');
so.addVariable('icons', 'false');
so.addVariable('screencolor', 'none');
so.addVariable('backcolor', 'FFFFFF');
so.addVariable('screenalpha', '0');
so.addVariable('overstretch', 'true');
so.write('player');

如果您需要任何其他信息, JW Player 网站上有一个关于嵌入 Flash的优秀教程和一个设置向导,它将提供现成的 SWFObject 代码。

第二个问题:AUTOSTART WHILE 显示:无

这是一个 IE 快速。在大多数浏览器中,当您设置 display: none 时,Flash 会被终止。在 IE 中不是这种情况。为了防止这种情况,您需要设置

so.addVariable('autostart', 'false');

如果您使用一些 JS 来设置 display CSS 属性并且您希望播放器在播放器出现时开始播放,我建议您修改您的 JS 以通过它的 API启动和停止播放器。诚然,这有点复杂,但这都是让事情在跨浏览器上无缝工作的一部分。

最好的,

扎克

开发者,长尾视频

于 2010-06-17T11:44:37.980 回答