繁体   English   中英

如何使用ExternalInterface获取JavaScript VAR?

[英]How can I get a JavaScript VAR with ExternalInterface?

我试图在我的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>

难道是我嵌入瑞士法郎的方式吗?

 <body>
<object width="550" height="400" id="mySwf">
<param name="movie" value="mySwf.swf">
<embed src="mySwf.swf" width="550" height="400">
</embed>
</object>
ExternalInterface.call("window.customLinkLocation.toString");

您要嵌入提供ID的swf吗?

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

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

function getCustomLinkLocation(){
    return customLinkLocation;
}

并打电话

ExternalInterface.call("getCustomLinkLocation");

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

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

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

得到它了。 问题是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>

您也可以这样做:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM