2009-08-01 3 views
1

aus irgendeinem Grund, wenn ich dynamisch laden ein swf auf ein $ (Dokument) .ready() durch Schreiben zu einem div, kann ich Javascript Aufrufe nicht zum Browser. Insbesondere alle Aufrufe an den Browser geben "null" zurück. Dies tritt nicht auf, wenn das SWF normalerweise beim Laden der Seite eingebettet wird, aber ich möchte das Laden des SWF bis zu einem bestimmten Zeitpunkt verhindern.Kann nicht kommunizieren mit Javascript von Flex nach dynamischen Laden eines swf

Was zum Teufel geht hier vor? Gibt es etwas Besonderes, ein swf dynamisch einzubetten, das verhindert, dass swf mit dem Browser kommuniziert? Die Methoden werden aufgerufen (ich habe dies durch das Anzeigen von Alarmen bewiesen), aber alle Rückgabewerte an beliebige Funktion, unabhängig von Typ zurückgegeben, zeigt als null, wenn es zu blinken.

Ist das ein Bug mit Flex, oder fehlt mir etwas komplett? Das hat mir große Kopfschmerzen bereitet.

Antwort

1

Die Umstellung auf swfobject2.2 zum Einbetten der swf hat das Problem magisch gemildert.

0

Ich nehme an, Sie verwenden ExternalInterface.call (oder vielleicht .addcallback)? Kannst du etwas Code schreiben (besonders von der JS-Seite)?

+0

Ja, ExternalInterface.call. Funktion myFunc() { zurück "Hey"; } Im Flash bekomme ich null. –

+0

Ich benutze swfobject, um swf einzubetten, und überschreibe document.write, um in ein div zu schreiben, nachdem die Seite geladen wurde. –

+0

Und von swfobject, meine ich das Adobe Deployment Toolkit. Dies wird sich ändern. –

0

Ich lief in genau dieses Problem und bekam um es in dieser (etwas eklig) Art und Weise des Prototyp mit PeriodicalExecuter:

Event.observe(window, 'load', function() { 
    //Check to see if the flash function is available once per second. 
    new PeriodicalExecuter(function(pe) { 
     var flash = $('flashObject'); 

     if(typeof flash.myFlashFunc == 'function'){ 
      //At this point, the flash function is available 
      pe.stop() 
     } 
    }, 1); 
}); 

Aktualisierung auf die neueste Version wahrscheinlich der beste Weg ist, obwohl zu gehen. Das muss ich an meinem Ende versuchen.

Verwandte Themen