2010-10-05 72 views
10

闪我想更新Flash变量值参数来查看其它视频:更新Flash变数并重新加载使用jQuery

<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这样的外部依赖项?

回答

0

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

ExternalInterface的允许AS3 &的Javascript

+2

据我所知,这不是一个解决方案。无论如何我们需要重新加载Flash呢? – momijigari 2013-05-28 23:59:22

4

我很好奇这太之间的双向通信。我试图通过flashvars发送一个新字符串到一个我没有机会改变的SWF,并且只需使用jQuery更改flashvars,而无需使用externalinterface,这是最好的选择。

+0

我也在寻找。 – Natim 2010-12-06 08:38:39

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> 
3

如果你想改变Flash变量,并重新加载的Flash,你应该只从DOM中删除的SWF文件,并与新的增值经销商(使用SWFObject或再次将其嵌入无论其他方法适合你的幻想!)。

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

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()); 
+0

好的答案 - 这对我有用。但是,我用'$(“#mviewer”)替换掉了最后一行。append(obj);' – Eric 2012-07-28 01:41:13

+0

不适用于我: – momijigari 2013-05-29 00:36:12

+0

您需要使用对象的* outer * HTML(包含''' '''标签)。例如。 '''的append(OBJ [0] .outerHTML)'''。 – 2017-03-31 02:37:51