2011-11-18 13 views
5

Ho un paio di pulsanti nella mia applicazione flash che chiamano due diverse funzioni javascript. Funzionano in tutti i browser tranne IE9 (non ho provato precedenti IE). Il mio codice per chiamare la funzione è qualcosa di simile:Perché la chiamata da Flash a Javascript non riesce in IE9?

ExternalInterface.call(
     "myLovelyFunction", 
     string1, string2); 

e il codice JS è simile al seguente:

function myLovelyFunction(string1, string2) { 
    window.open('https://twitter.com/share?url=http%3A%2F%2Fwww.mysite.com%2Fapage.php&via=atwitteraccount&text=Some%20text%22&related=atwitteraccount', 
    'windowname', 
    'height=290,width=510'); 
} 

In IE9, la funzione non fa assolutamente nulla, ma la console si lamenta con:

SCRIPT438: Object doesn't support property or method 'SetReturnValue' 
index.php, line 1 character 1 

riga 1, il carattere 1 indica chiaramente niente in particolare.

Posso farlo funzionare correttamente passando alla vista compatibilità, anche se l'errore della console non scompare.

C'è qualcosa riguardo a IE9 che causa questo e, cosa più importante, come posso risolvere questo problema?

+2

vedere il codice effettivo anziché "qualcosa di simile" sarebbe molto utile. Forse anche un link a un sito di prova? –

+0

ha aggiunto il corpo completo della funzione js, anche se il corpo della funzione sembra non avere alcuna importanza. – izb

+0

Ti capita di avere qualcosa come questo 'Foobar.SetReturnValue()' e un elemento HTML con un ID di 'Foobar' nella tua pagina? – HoLyVieR

risposta

6

Ho avuto questo stesso problema pure. Stavo usando il seguente codice:

<object type="application/x-shockwave-flash" data="/files/banners/64/64_300x250.swf" width="300" height="250"> 
     <param name="movie" value="/files/banners/64/64_300x250.swf"/> 
     <param name="wmode" value="transparent"/> 
    </object> 

Sto solo incorporare il flash con un tag Object regolare (senza SWFObject e nessun embed fallback). Il mio file flash chiama la funzione window.open JS tramite ExternalInterface in questo modo:

ExternalInterface.call("window.open", url, target, features); 

Che cosa non ha funzionato: Il link sopra suggerisce di cambiarlo in "document.open", che non ha funzionato. Anche il tentativo di forzare il rendering della pagina in modalità IE-8 non ha funzionato. Per esempio:

<meta http-equiv="X-UA-Compatible" content="IE=8" /> 

Cosa ha funzionato: La semplice aggiunta di un "nome" e "id" al tag object risolto il problema. Ad esempio:

<object type="application/x-shockwave-flash" data="/files/banners/64/64_300x250.swf" width="300" height="250" name="flash_object" id="flash_object"> 
+0

Questa risposta mi ha permesso di risparmiare ore di lavoro con Internet Explorer 11. Ho risolto il problema in 5 minuti, grazie mille! –

Problemi correlati