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

时间:2010-10-05 07:12:18

标签: javascript jquery internet-explorer-8 flash

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

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

我发现通过更新参数以及读取整个Flash内容的额外步骤,我可以在Firefox中使用它。

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

但这在IE8中不起作用,因为浏览器不会刷新Flash内容。关于如何在没有外部依赖性的情况下重新加载flash内容的任何想法,如swfobject.js?

5 个答案:

答案 0 :(得分:5)

// 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());

答案 1 :(得分:4)

我也很好奇。我正在尝试通过flashvars将新字符串发送到SWF,我没有机会更改,只需使用jQuery更改flashvars,而不必使用外部接口,是最好的选择。

答案 2 :(得分:3)

如果你想更改闪存变量并重新加载Flash,你应该从DOM中删除SWF并再次使用新变量嵌入它(使用SWFObject或任何其他适合您的方法!)。

如果你想在不重新加载Flash的情况下更改闪存变量,那你就不走运了:没有官方支持的方式。在这种情况下,您应该使用ExternalInterface来调用从JavaScript更新值的ActionScript方法。

答案 3 :(得分:0)

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

ExternalInterface允许AS3和EX3之间的双向通信。的Javascript

答案 4 :(得分: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>