My simple ActionScript Sto tentando di utilizzare il codice ExternalInterface di Flash per impostare un callback in modo che JavaScript possa chiamare un metodo sul mio oggetto Flash. Tutto funziona bene in Safari, Firefox e IE, ma non riesco a far funzionare Chrome. Quando provo il codice su Chrome, ottengo il seguente errore:Problema di accesso al metodo esposto di ExternalInterface in Google Chrome
Uncaught TypeError: Object #<an HTMLObjectElement> has no method 'setText'
Ecco l'esempio HTML che sto usando (ancora una volta, funziona bene in Safari, FF e IE)
<html><body>
<div id="mycontent"></div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("http://invincible.dynalias.com:8080/HelloWorld.swf", "mycontent", "400", "420", "9.0.0","expressInstall.swf", {}, {allowScriptAccess:'always'},{id:'hw',name:'hw'});
function getFlash(movieName) {
return (navigator.appName.indexOf("Microsoft") != -1) ? window[movieName] : document.getElementById(movieName);
}
</script><p>
<input type="text" id="exampleText" /> <input type="button" value="Set Text" onclick="getFlash('hw').setText(document.getElementById('exampleText')
.value)" />
</body>
</html>
e qui è l'ActionScript ...
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.external.ExternalInterface;
import flash.system.Security;
public class HelloWorld extends Sprite {
private var textField:TextField = new TextField();
public function HelloWorld() {
Security.allowDomain("*");
ExternalInterface.addCallback("setText", this.setText);
textField.text = "Hello, world!";
addChild(textField);
}
public function setText(text:String):void {
this.textField.text = text;
}
}
}
Non correlato al tuo problema, ma dovresti davvero rimuovere quel brutto "navigatore". – kangax
In realtà, Chrome sul mio Mac non genera errori (e sembra impostare correttamente il testo) – kangax
Il tuo diritto, funziona in modo frustrante per me anche su Chromium sul mio Mac. Solo non Chrome su Windows –