从跨域父级访问iframe中的函数



我对此做了一些研究,我发现在同一域的情况下,你可以使用

document.getElementById('iframe_id').contentWindow.function_name()

我在跨域上尝试过(只是试验)它给出了一个跨域错误&

异常:TypeError:对象[object Window]的属性"function_name"不是函数

所以我有一个由三部分组成的问题

a) 如果我在从child访问parent时遇到问题,这是可以理解的(我已经在处理这个问题,在child iframe中使用另一个iframe(来自parent的域))。但为什么我们在从父母那里访问孩子时会遇到问题,这不是和一样的吗

b) 当我调试时,使用chrome检查器工具&尝试查看document.getElementById('iframe_id').contentWindow的值,我在它下面看到了我的函数名称,但document.getElementById('iframe_id').contentWindow.function_name()无法访问它。为什么?

c) 如何从父级成功调用iframe中的javascript函数(没有easyXDM或任何其他插件)?

更多详细信息:
我更喜欢双向通信,因为在中,我的父母会调用iframe中的一个函数,该函数返回一个结果&根据这个结果,父级将决定是否要重定向

我使用了postMessage。看起来是一个更简单的解决方案。

我想做的事:"beforeunload",向子iframe发送消息,作为回调接收响应。基于响应显示消息或导航。

但这是不可能的。

我就是这样解决的:

每次我的孩子框架发生变化时,我都会给家长发一条信息。我收集了这些信息&在"beforeunload"上使用它们来决定是否应该导航或显示消息

您可以使用location.hash轮询。父级更改URL#哈希,子级在setInterval循环中检查更改。http://ajaxian.com/archives/cross-domain-iframe-communication-without-location-polling

就"easyXDM"而言,你本质上是在重新发明轮子。

相关内容

  • 没有找到相关文章

最新更新