Mój prosty ActionScript Próbuję użyć funkcji Flash ExternalInterface, aby skonfigurować wywołanie zwrotne, aby JavaScript mógł wywoływać metodę w moim obiekcie Flash. Wszystko działa dobrze w Safari, Firefox i IE, ale nie mogę uruchomić Chrome. Kiedy próbuję kod na Chrome, pojawia się następujący błąd:Problem z dostępem do metody narażonej na działanie ExternalInterface w przeglądarce Google Chrome
Uncaught TypeError: Object #<an HTMLObjectElement> has no method 'setText'
Oto przykład HTML używam (znów działa prawidłowo w Safari, FF i 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>
i tutaj jest 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;
}
}
}
Niezwiązany z twoim problemem, ale powinieneś naprawdę usunąć ten paskudny "navigator" sniff. – kangax
W rzeczywistości Chrome na moim Macu nie generuje żadnych błędów (i wydaje się, że poprawnie ustawia tekst). – kangax
Twoje prawo, to frustrująco działa dla mnie również na Chromium na moim Macu. Po prostu nie Chrome w systemie Windows –