Javascript 如何与运行在Flex应用程序中的iFrame中托管的html文件通信?

Javascript 如何与运行在Flex应用程序中的iFrame中托管的html文件通信?,javascript,html,apache-flex,Javascript,Html,Apache Flex,问题:需要将已发生事件的通知从iFrame中托管的external pivot.html发送到Flex应用程序以进行事件处理 我在main.html中托管了一个Flex应用程序。我还有pivot.html,它显示在Flex应用程序内部的iFrame中。由于安全域的原因,我只能从main.html向Flex应用程序发送回调。问题是我需要处理Flex应用程序中pivot.html内组件上接收到的事件。所以我需要从pivot.html调用main.html,main.html将依次调用Flex应用程序

问题:需要将已发生事件的通知从iFrame中托管的external pivot.html发送到Flex应用程序以进行事件处理

我在main.html中托管了一个Flex应用程序。我还有pivot.html,它显示在Flex应用程序内部的iFrame中。由于安全域的原因,我只能从main.html向Flex应用程序发送回调。问题是我需要处理Flex应用程序中pivot.html内组件上接收到的事件。所以我需要从pivot.html调用main.html,main.html将依次调用Flex应用程序中的函数

但是,如果我不能从pivot.html调用main.html中的函数,我该怎么做呢

在pic中需要做什么:


谢谢

我想你可以使用postmessage通信。试着回答我自己的问题(最终解决了这个问题,希望它能帮助别人):

  • 定义要动态注入的函数

    注射机。作为

  • 注册这些函数,并使用ExternalInterface将它们从Flex App动态注入main.html
  • Viewer.mxml

    ...
    ExternalInterface.call(Injecter.getIFrameWindow);
    ExternalInterface.call("setObjectID", IFrame.applicationId, iFrame.getIFrameId());
    ExternalInterface.addCallback("currentPageChange", currentPageChange);
    ...
    
  • pivot.html调度事件以获取Flex应用程序中调用的currentPageChange函数

    function SomeEventHandler() 
    {
           var evt = document.createEvent("CustomEvent");
           evt.initCustomEvent("pagechange", true, true, "some_data_to_be_passed_here");
           window.dispatchEvent(evt);
    }
    

  • 使用ExternalInterface.call是一种方法。
    function SomeEventHandler() 
    {
           var evt = document.createEvent("CustomEvent");
           evt.initCustomEvent("pagechange", true, true, "some_data_to_be_passed_here");
           window.dispatchEvent(evt);
    }