Flex应用程序(在IFrame中)如何从主页面调用JS方法

How can Flex application (with-in an IFrame) invoke a JS method from the main page?

本文关键字:主页 调用 方法 JS 应用程序 IFrame Flex      更新时间:2023-09-26

我的主页加载一个iframe,其中包含一个Flex应用程序(占据屏幕的一部分)。

flex应用程序有一个"取消"按钮,可以使用主页中的JavaScript方法("goBack()")将主页导航到不同的位置。

我尝试使用这个Flex-AS代码来执行"取消"按钮,但没有成功(它尝试使用父对象调用JS函数):

    public function cancel(){
        flash.external.ExternalInterface.call("parent.goBack()");
    }

这是JavaScript代码

   function goBack(){
          window.top.location='some_URL';
   }

感谢你的想法

更新:

我发现在尝试调用JS方法时出现了以下错误:

     "Blocked a frame with origin https://SITEA from accessing a cross-origin frame."

根据从iframe调用父窗口函数,您正处于调用主页goBack()函数的正确轨道上。

尝试在加载iframe的页面中添加一个javascript函数:

function iframeGoBack() {
    window.parent.goBack();
}

然后从ExternalInterface 调用

或者,如果您知道所需的URL,则可以在Flex代码中切换为使用navigateToURL()

根据我所看到的,在不同的源(例如,来自不同域/端口的iframe)之间调用JS方法时有很多限制。

我通过使用IFrame Flex应用程序调用主页"history->back"方法绕过了这个问题:

          flash.external.ExternalInterface.call("window.history.back()");

这很好。

我还注意到有一个特殊的库,用于不同来源之间的通信,称为easyxdm

http://easyxdm.net/wp/

我没有使用它,但它得到了很多社区的支持。