我正在尝试在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>
答案 0 :(得分:1)
ExternalInterface.call("window.customLinkLocation.toString");
答案 1 :(得分:1)
你是否在提供id的情况下嵌入了swf?
答案 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)");