Обновление flashvars и перезагрузка flash с помощью jQuery

Я хотел бы обновить аргумент значения flashvars для просмотра другого видео:

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

Я узнал, что могу заставить его работать в Firefox, обновив параметр дополнительным шагом для чтения всего содержимого флеш-памяти.

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

Но это не работает в IE8, поскольку браузер не обновляет содержимое Flash. Любые идеи о том, как перезагрузить содержимое Flash без внешних зависимостей, таких как swfobject.js?

Ответ 1

Вместо использования flashvars вы можете использовать класс ExternalInterface AS3 для отправки нового значения во Flash.

ExternalInterface позволяет двухстороннюю связь между AS3 и Javascript

Ответ 2

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

Ответ 3

Мне тоже интересно. Я пытаюсь отправить новую строку через flashvars в SWF, что у меня нет возможности изменить, и просто изменение flashvars с помощью jQuery, без использования внешнего интерфейса, является лучшим вариантом.

Ответ 4

Если вы хотите изменить флеш-вары и перезагрузить Flash, вы должны просто удалить SWF из DOM и вставить его снова с новыми варами (используя SWFObject или любой другой способ, подходящий вашему воображению!).

Если вы хотите изменить флеш-карты без перезагрузки Flash, вам не повезло: официально не поддерживается. В этом случае вы должны использовать ExternalInterface для вызова методов ActionScript, которые обновляют ваши значения из JavaScript.

Ответ 5

Собственно, почему бы не использовать 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>