【问题标题】:flex ExternalInterface won't execute call() functionflex ExternalInterface 不会执行 call() 函数
【发布时间】:2011-11-09 14:53:05
【问题描述】:

由于某种原因,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 文件有关。有没有办法让它在没有网络服务器的情况下工作?

【问题讨论】:

  • 你能粘贴你的alert函数吗?
  • 警报功能是浏览器警报。如果我是从 Web 服务器运行它而不是仅仅打开文件,那么一切正常。我确定这与安全策略或其他东西有关。

标签: apache-flex actionscript-3 adobe


【解决方案1】:

尝试在嵌入参数中同时指定idclassid。它在所有浏览器(尤其是 IE)中都对我有帮助。

【讨论】:

    【解决方案2】:

    Here's我不久前发布的答案。希望对您有所帮助。

    摘录:

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

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

    【讨论】:

      【解决方案3】:

      你试过了吗

      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?也存在类似的问题

      【讨论】:

      • ExternalInterface.call("javascript:alert", "hi");ExternalInterface.call("alert", "hi");有什么区别?
      • 只是一个想法。如果我从 html 调用 JavaScript 函数,我通常使用 javascript:myFunction()
      • 你可以使用。但你的答案与问题不符。
      • 好吧,但在某些浏览器中只有javascript:function() 有效
      • 好吧,我有一段时间没有做过任何 javascript,但我相信 firefox 4 和更低版本,IE 7 曾经这样做
      猜你喜欢
      • 2022-11-03
      • 2011-08-06
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多