flex ExternalInterface不会执行call()函数

时间:2011-09-03 05:35:56

标签: flex actionscript-3 adobe

由于某种原因,ExternalInterface.avaiable显示为true,但它不会调用alert()。任何人都可以解释这个问题吗?

private function checkEI():void {
     eiStatus = ExternalInterface.available.toString();
     ExternalInterface.call("alert", "hi");
}

我的配置在这里:

var params = {
    menu: "false",
    scale: "noScale",
    allowFullscreen: "true",
    allowScriptAccess: "always",
    bgcolor: "",
    wmode: "direct" // can cause issues with FP settings & webcam
};

看起来它与不在网络服务器和浏览器直接打开的html文件有关。有没有办法让它在没有网络服务器的情况下工作?

3 个答案:

答案 0 :(得分:0)

尝试在嵌入参数中指定idclassid。它帮助了我所有的浏览器(特别是IE)。

答案 1 :(得分:0)

Here's我之前发布的答案。希望它有所帮助。

摘录:

  

我发现由于某种原因,ExternalInterface.call不起作用   在文件://并且需要http(s)://

     

所以,任何面对这个问题的人,都要自己动手   webserver(Apache)或用于测试这类事物的GAE

答案 2 :(得分:-1)

你试过吗

ExternalInterface.call("javascript:alert", "hi");

第二个想法, Flash的安全策略禁止swf通过文件协议调用html中的javascript。你会收到这个错误: #2060: Security sandbox violation: ExternalInterface caller file: c:/test.swf cannot access file: c:\testhtml.htm

我相信Does ExternalInterface work on the file: protocol?

也存在类似的问题