2009-07-22 21 views
1

Ich versuche, eine Aktion in einem Flash-Objekt aus der Javascript aufrufen:ExternalInterface funktioniert nicht in IE

als:

function testExternalConnection(str:String):Void { 
    _root.debug.htmlText = "testExternalConnection ok"; 
} 
ExternalInterface.addCallback("testExternalConnection", this, testExternalConnection); 

js:

var movie = getFlashMovie("ap1_mod_hidden") 
movie.testExternalConnection(); 

mit

function getFlashMovie(movieName) { 
    var isIE = navigator.appName.indexOf("Microsoft") != -1; 
    return (isIE) ? window[movieName] : document[movieName]; 
} 

Ich schließe meinen Blitz mit swfo bjekt:

<span id="ap1_mod_hidden"></span> 
<script type="text/javascript"> 
    // Setting up the flash player 
    var flashvars = { 
     mp3Path: "stop", 
     artistName : "", 
     trackName : "" 
    }; 
    var params = { 
     codebase: 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0', 
     src: '/flash/ap1_mod.swf', 
     quality: 'high', 
     pluginspage: 'http://www.macromedia.com/go/getflashplayer', 
     scale: 'showall', 
     devicefont: 'false', 
     bgcolor: '#999999', 
     name: 'ap1_mod', 
     menu: 'true', 
     id: 'mod', 
     allowFullScreen: 'false', 
     allowScriptAccess:'always', //sameDomain 
     movie: '/flash/ap1_mod.swf', 
    wmode: "transparent", 
    allowfullscreen: "true" 
    }; 

    swfobject.embedSWF("/flash/ap1_mod.swf", "ap1_mod_hidden", "300", "300", "9.0.0", false, flashvars, params); 
</script> 

Nichts verrückt hier. Also funktioniert dieser Code in allem, aber nicht im Internet Explorer (was für eine Überraschung: \). Das Filmobjekt wird korrekt abgerufen, die Funktion Externalinterface kann jedoch nicht aufgerufen werden. Es heißt, dass die Eigenschaft nicht definiert ist.

Ich habe auf Google und SO ohne Erfolg geschaut ... jede Hilfe wäre willkommen!

+0

Vielleicht IE ist verschroben, weil Sie das Argument str zu testExternalConnection liefern nicht. –

Antwort

5

Ich glaube, Sie wollen die ID verwenden, nicht die div Sie die SWF sind die Zugabe von zu so:

function getFlashMovie(movieName) { 
    return swfobject.getObjectById("mod"); 
} 

da Sie Einstellung „mod“, wie die id.

+3

swfobject.embedSWF fügt das swf nicht tatsächlich in das angegebene Element ein, sondern ersetzt das Element. Etwas merkwürdig! –

+0

es funktioniert, du kannst dir nicht vorstellen, wie hilfreich das war! – marcgg

+0

froh zu helfen! swfobject 2.0's neues div ersetzendes Ding verwirrte mich total, als ich das erste Mal versuchte, ein externes Interface einzurichten, die alte Version ersetzte nur das innereHTML, also war es irgendwie unerwartet. – quoo