Javascript ExternalInterface.call()未获取返回值

Javascript ExternalInterface.call()未获取返回值,javascript,apache-flex,flash,actionscript-3,Javascript,Apache Flex,Flash,Actionscript 3,我有一个返回div的innerHTML的Javascript函数。我试图从Actionscript调用这个函数并存储返回值。我知道调用Javascript函数是因为有一个警报显示返回数据,但是返回到Actionscript的数据为null。我不确定这是什么原因造成的。下面是我尝试执行的代码示例: Javascript: function JSFunc () { var x = document.getElementById("myDiv"); alert(x.innerHTM

我有一个返回div的innerHTML的Javascript函数。我试图从Actionscript调用这个函数并存储返回值。我知道调用Javascript函数是因为有一个警报显示返回数据,但是返回到Actionscript的数据为null。我不确定这是什么原因造成的。下面是我尝试执行的代码示例:

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";
}

正如我前面所说的,警报与div的内容一起显示,但是textfield中的文本总是“返回Null”,这意味着ExternalInterface是可用的。我应该补充一点,我只能在IE7和IE8中测试这一点。如果您有任何关于如何做的建议,我们将不胜感激

您应该使用import语句

import flash.external.*;

尝试将
作为字符串添加到调用中:

textField.text = ExternalInterface.call("JSFunc") as String;

我还注意到您的代码=>textField!=textfield

尝试从外部接口调用中获取对象,而不首先强制转换它,然后在调试器中查看它。如果它不是字符串,尝试将其转换为字符串将导致null。这应该是一个字符串,但在您尝试使用它之前,看看您实际得到了什么并没有坏处。

基于您提供的代码。您可以右键单击它以查看源。我怀疑问题出在“myDiv”的HTML中,或者在调用actionscript时。

我一直遇到的问题的根源是我用来嵌入flash电影的对象标记。我使用了一个遵循本例的标记,我对其进行了更改以匹配本例:然后我确保我向对象添加了id,并且一切正常

在我看来,您的问题在于从javascript返回一个字符串,即myDiv元素的innerHTML属性。在actionscript中,您已将ExternalInterface调用作为对象返回的变量数据类型化,但它是一个字符串。也许你已经发现了这个问题,但我不知道,因为你还没有修改你的代码

//The following is an Object
var x = document.getElementById("myDiv");

/*
You are returning the innerHTML property of x, a string, but on the
flash end your expecting an object in your actionscript.
*/
return x.innerHTML;

//The following seems incorrect to me.
var retData:Object = ExternalInterface.call("JSFunc");

//Should be
var retData:String = ExternalInterface.call("JSFunc");

希望这有帮助,小心。

尝试了打字,但没有掷骰子。很抱歉,错误代码不是我实际使用的示例。好的,代码没有问题,除非代码的其他部分与文本字段内容相混淆。对象为空,这是调试器告诉我的。谢谢你告诉我代码本身不是问题,我想问题可能是我用来在IE中嵌入电影的对象标记。还有我如何看到你使用的javascript和div?nm,我找到了javascript和div。