我的主页面加载了一个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."
答案 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
我没有使用它,但它获得了很多社区认可。