我有一个Javascript函数,它返回div的innerHTML。我试图从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中的文本始终是“Returned Null”,这意味着ExternalInterface可用。我应该补充一点,我只能在IE7和IE8中测试它。任何有关做什么的建议都将不胜感激。
答案 0 :(得分:3)
This is a working sample。您可以右键单击它以查看源。我怀疑问题在于'myDiv'的HTML或者你正在进行动作调用。
答案 1 :(得分:2)
我遇到的问题的根源是必须使用我用来嵌入flash影片的对象标签。我使用的是跟随此示例http://www.w3schools.com/flash/flash_inhtml.asp的标记,我将其更改为与此示例匹配:http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_4150然后我确保向对象添加了id并且一切正常。
答案 2 :(得分:0)
尝试在呼叫中添加as String
:
textField.text = ExternalInterface.call("JSFunc") as String;
答案 3 :(得分:0)
我还注意到你的代码中有拼写错误=> textField!= textfield
答案 4 :(得分:0)
尝试从外部接口调用中取回对象,而不先将其强制转换,然后在调试器中查看它。如果它不是字符串,尝试将其强制转换为字符串将导致null。这应该是一个字符串,但是在尝试使用它之前看看你实际上得到的东西并没有什么坏处。
答案 5 :(得分:0)
在我看来,你的问题是从javascript返回一个字符串,你的myDiv元素的innerHTML属性。在actionscript中,您已将ExternalInterface调用返回的变量数据类型化为Object,但它是一个String。也许你已经抓住了这个,但我不能告诉你,因为你没有修改你的代码。
//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");
希望这很有帮助,小心。
答案 6 :(得分:-1)
您应该使用import语句
import flash.external.*;