更新flashvars并使用jQuery重新加载flash

9

我想更新flashvars值参数以查看另一个视频:

<param name='flashvars' value='movieId=1002' />

我发现在Firefox中可以通过更新参数并重新添加整个flash内容的额外步骤来使其工作。

$("param[name=flashvars]").attr("value", "movieId=33");
$("embed").attr("flashvars", "movieId=33");
$(".root").append($("#video"));

但是在IE8浏览器中这并不起作用,因为浏览器无法刷新Flash内容。有没有办法重新加载Flash内容而不依赖外部库,比如swfobject.js?

5个回答

4
// update flashvars
var fv = 'foobar=1';

$("object param[name='flashvars']").attr("value", fv);
$("embed").attr("flashvars", fv);

// create new object to hold it     
var obj = $("object");

// remove existing Flash from DOM
$("object").remove();

// add new HTML to DOM
$("#mviewer").append(obj.html());

好的答案 - 这对我有用。然而,我将最后一行替换为 $("#mviewer").append(obj); - Eric
你需要使用对象的外部HTML(包括<object>标签)。例如:append(obj[0].outerHTML) - corwin.amber

4

我也很好奇这个问题。我想通过flashvars向一个我无法更改的SWF发送一个新的字符串,而只是使用jQuery更改flashvars,而不必使用externalinterface,这是最好的选择。


3
如果您想更改flash变量并重新加载Flash,则只需从DOM中删除SWF,然后使用新变量再次嵌入它(使用SWFObject或任何其他适合您喜欢的方法!)。
如果您想在不重新加载Flash的情况下更改flash变量,则很遗憾:没有官方支持的方法。在这种情况下,您应该使用ExternalInterface来调用ActionScript方法,从JavaScript更新您的值。

0

其实,为什么不使用swfobject.js呢?

我是这样做的:

   <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
   <script type="text/javascript" src="js/swfobject.js"></script>

   <div id="qsound"></div>

<script type="text/javascript">
   if(q.sound) {
    swfobject.embedSWF("js/dewplayer/dewplayer.swf", "qsound", "60", "20", "9.0.0", false, {'mp3': 'sounds/'+q.sound}, {'wmode': 'transparent'});
    $('#qsound').show();
} else {
    $('#qsound').hide();
}
</script>

0

你可以使用ExternalInterface AS3类将新值发送到Flash,而不是使用flashvars。

ExternalInterface允许AS3和Javascript之间进行双向通信。


2
据我所知,那不是一个解决方案。如果我们无论如何需要重新加载Flash呢? - momijigari

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