如何使用ExternalInterface获取JavaScript VAR?

时间:2010-11-05 15:08:50

标签: javascript flash actionscript-3 actionscript

我正在尝试在ActionScript(2.0)中使用ExternalInterface.call函数来获取包装文档中设置的javascript var值。以下似乎适用于FireFox和Chrome,但自然,它在IE(8)中不起作用。任何人都可以提出另一种方法来获取存储在此变量中的值吗?谢谢!

var linkPath = ExternalInterface.call("function(){return window.customLinkLocation;}", null);

JavaScript的:

<head>
    <script type="text/javascript">
    var customLinkLocation = "http://localhost/file.xml";
    </script>
</head>

这可能是我嵌入swf的方式吗?

 <body>
<object width="550" height="400" id="mySwf">
<param name="movie" value="mySwf.swf">
<embed src="mySwf.swf" width="550" height="400">
</embed>
</object>

6 个答案:

答案 0 :(得分:1)

ExternalInterface.call("window.customLinkLocation.toString");

答案 1 :(得分:1)

你是否在提供id的情况下嵌入了swf?

http://forums.adobe.com/message/2638459#2638459

答案 2 :(得分:1)

根据我对documentation和某些(但不是太多)以前的经验的理解:您需要通过提供其名称来调用函数。您无法从ActionScript执行自定义代码。在这种情况下,您需要在JavaScript中创建一个返回所需值的函数。

function getCustomLinkLocation(){
    return customLinkLocation;
}

并致电

ExternalInterface.call("getCustomLinkLocation");

我不知道为什么Firefox和Chrome允许您调用匿名函数,但ExternalInterface参考没有说明任何内容。

  

在ActionScript中,您可以在HTML页面上执行以下操作:

     
      
  • 调用任何JavaScript函数。
  •   
  • 传递任意数量的参数,包括任何名称。
  •   
  • 传递各种数据类型(布尔值,数字,字符串等)。
  •   
  • 从JavaScript函数接收返回值。
  •   

答案 3 :(得分:1)

知道了。问题是IE要求您在'object'元素上使用classid属性。

<object width="550" height="400" id="mySwf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
<param name="movie" value="mySwf.swf">
<embed src="mySwf.swf" width="550" height="400">
</embed>
</object>

答案 4 :(得分:0)

还要确保在嵌入代码中将allowscriptaccess设置为“always”。

答案 5 :(得分:0)

你也可以这样做:

ExternalInterface.call("eval","getVar=function(obj){return obj}");
var yourVar:String = ExternalInterface.call("eval","getVar(JSvar)");