ExternalInterface.call() nicht immer Rückgabewert
Ich habe eine Javascript-Funktion, die zurückgibt, der innerHTML ein div. Ich bin versucht, um diese Funktion aufrufen von Actionscript-Code und speichern den Rückgabewert. Ich weiß, dass die Javascript-Funktion aufgerufen wird, weil es eine Warnmeldung, die Daten zurückgeben, Die Daten, die zurückgegeben wird, Actionscript, jedoch null ist. Ich bin mir nicht sicher, was dies verursacht. Hier ist ein code Beispiel, was ich bin versucht zu tun:
Javascript:
function JSFunc () {
var x = document.getElementById("myDiv");
alert(x.innerHTML);
return x.innerHTML;
}
Actionscript:
import flash.external.*;
if (ExternalInterface.available) {
var retData:Object = ExternalInterface.call("JSFunc");
if(retData != null) {
textField.text = retData.toString();
} else {
textField.text = "Returned Null";
}
} else {
textField.text = "External Interface not available";
}
Wie ich schon sagte, die Warnung auftaucht mit dem Inhalt des div, aber der text im textfield-Objekt ist immer "Null Zurückgegeben", was bedeutet, dass die ExternalInterface verfügbar ist. Ich sollte hinzufügen, dass ich nur testen diese im IE7 und IE8. Irgendwelche Tipps, was zu tun wäre sehr geschätzt werden.
InformationsquelleAutor Adam Richardson | 2009-03-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein funktionierendes Beispiel basiert auf dem code, die Sie zur Verfügung gestellt. Sie können mit der rechten klicken Sie darauf, um die Quelle anzuzeigen. Ich vermute, das problem liegt in den HTML-Code für 'myDiv' oder, wenn Sie die actionscript-Aufruf.
nm, ich fand das javascript und div.
InformationsquelleAutor Osman
Die Quelle des Problems, habe ich mit dem zu tun hat, das object-tag, ich war mit einbetten von flash-Film. Ich war mit einem tag, die diesem Beispiel gefolgt http://www.w3schools.com/flash/flash_inhtml.asp, ich habe es passend zu diesem Beispiel: http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_4150 und dann machte ich sicher, dass ich id für das Objekt, und alles funktionierte.
InformationsquelleAutor Adam Richardson
Versuchen Sie
as String
dem Aufruf:InformationsquelleAutor Simon Lehmann
Habe ich auch bemerkt, du hast einen Tippfehler in deinem code => textField != textfield
Gut, es ist nichts falsch mit diesem code, es sei denn, einige andere Teil des Codes ist messing mit mit den textfield-Inhalt.
InformationsquelleAutor Claudio
Versuchen, um das Objekt wieder von Ihrem externen interface nennen, ohne zu Gießen, und schauen Sie es im debugger. Wenn es keine Zeichenfolge ist, versuchen zu casten, ein string-Ergebnis null. Dies sollte ein string sein, aber es verletzt nicht, um zu sehen, was Sie eigentlich immer zurück, bevor Sie versuchen, mit ihm zu arbeiten.
InformationsquelleAutor Osman
Scheint es mir, dass Ihr problem ist, dass javascript, das Sie wieder einen string, der innerHTML-Eigenschaft des Ihr myDiv element. In actionscript haben Sie datatyped die variable, die die ExternalInterface-Aufruf gibt an, wie ein Objekt, aber es ist ein String. Vielleicht haben Sie bereits gefangen, aber ich kann nicht sagen, wie Sie es noch nicht geändert code.
Ich hoffe, das war hilfreich, kümmern.
InformationsquelleAutor Brian Hodge
Sollten Sie die import-Anweisung
InformationsquelleAutor Claudio