Flex应用程序(带有IFrame)如何从主页面调用JS方法?

时间:2014-09-10 12:37:39

标签: javascript flex

我的主页面加载了一个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."

2 个答案:

答案 0 :(得分:0)

根据Calling a parent window function from an iframe,您可以正确调用主页goBack()功能。

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

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

然后从ExternalInterface

调用它

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

答案 1 :(得分:0)

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

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

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

这很好。

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

http://easyxdm.net/wp/

我没有使用它,但它获得了很多社区认可。