2010-10-05 12 views
10

Ich mag das flashvars Wertargument aktualisieren ein weiteres Video zu sehen:aktualisiert flashvars und lädt Blitz mit jQuery

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

Ich fand heraus, dass ich es kann durch die Aktualisierung der Parameter mit dem zusätzlichen Schritt in Firefox funktioniert den gesamten Flash-Inhalt zu lesen.

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

Aber das funktioniert nicht im IE8, da der Browser den Flash-Inhalt nicht aktualisiert. Irgendwelche Ideen, wie man den Flash-Inhalt ohne externe Abhängigkeiten wie swfobject.js neu lädt?

Antwort

0

Anstatt flashvars zu verwenden, können Sie die ExternalInterface AS3-Klasse verwenden, um den neuen Wert an Flash zu senden.

ExternalInterface ermöglicht eine Zwei-Wege-Kommunikation zwischen AS3 & Javascript

+2

Das ist keine Lösung, soweit ich es verstehe. Was ist, wenn wir Flash trotzdem neu laden müssen? – momijigari

4

Ich bin neugierig auf das auch. Ich versuche, eine neue Zeichenfolge per Flashvars zu einer SWF zu senden, die ich nicht ändern kann, und nur die Flashvars mit jQuery zu ändern, ohne externe Schnittstelle zu verwenden, ist die beste Option.

+0

Ich suche auch danach. – Natim

0

Eigentlich warum nicht swfobject.js verwenden?

ich so tat:

<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

Wenn Sie den Flash-Vars ändern mögen, und laden Sie die Flash Sie sollten nur die SWF aus dem DOM entfernen und binden sie wieder mit Ihrem neuen Vars (mit SWFObject oder was für eine andere Methode gefällt dir!).

Wenn Sie die Flash-Vars ändern möchten, ohne den Flash neu zu laden, haben Sie kein Glück: Es gibt keine offiziell unterstützte Möglichkeit. In diesem Fall sollten Sie ExternalInterface verwenden, um ActionScript-Methoden aufzurufen, die Ihre Werte von JavaScript aktualisieren.

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

Gute Antwort - das hat bei mir funktioniert. Allerdings habe ich die letzte Zeile mit '$ (# mviewer) ausgeschaltet. Append (obj);' – Eric

+0

Funktioniert nicht für mich: – momijigari

+0

Sie müssen das * äußere * HTML des Objekts verwenden (um das '' 'einzuschließen) '' 'Tag). Z.B. '' 'append (obj [0] .outerHTML)' ''. –

Verwandte Themen