2010-10-05 11 views
10

me gustaría actualizar el argumento de valor FlashVars para ver otro video:flashvars Actualizar y volver a cargar el flash con jQuery

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

descubrí que puedo hacer que funcione en Firefox mediante la actualización del parámetro con el paso extra de leer todo el contenido flash.

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

Pero esto no funciona en IE8 como navegador no va a actualizar el contenido flash. ¿Alguna idea sobre cómo volver a cargar los contenidos flash sin dependencias externas como swfobject.js?

Respuesta

0

En lugar de usar flashvars, puede usar la clase ExternalInterface AS3 para enviar el nuevo valor a Flash.

ExternalInterface permite una comunicación bidireccional entre AS3 & Javascript

+2

Esa no es una solución por lo que yo entiendo. ¿Qué pasa si tenemos que volver a cargar Flash de todos modos? – momijigari

4

Tengo curiosidad acerca de esto también. Estoy tratando de enviar una nueva cadena a través de flashvars a un SWF que no tengo oportunidad de cambiar, y simplemente cambiar los flashvars con jQuery, sin tener que usar la interfaz externa, es la mejor opción.

+0

También estoy buscando eso. – Natim

0

En realidad, ¿por qué no usar swfobject.js?

lo hice así:

<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

Si desea cambiar los VARs de flash y vuelva a cargar el flash, sólo debe quitar el SWF del DOM e incrustarlo otra vez con sus nuevos VARs (utilizando SWFObject o ¡cualquier otro método que se adapte a tu fantasía!).

Si quiere cambiar los flash vars sin tener que volver a cargar el Flash, no tiene suerte: no hay una forma de soporte oficial. En este caso, debe usar ExternalInterface para llamar a los métodos de ActionScript que actualizan sus valores desde JavaScript.

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

Buena respuesta: esto funcionó para mí. Sin embargo, me cambié a cabo la última línea con '$ ("# mViewer") append (obj);' – Eric

+0

No funciona para mí:. – momijigari

+0

Es necesario utilizar * * exterior HTML del objeto (para incluir el '' ' '' 'tag). P.ej. '' 'append (obj [0] .outerHTML)' ''. –

Cuestiones relacionadas