2010-10-05 71 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