如何将焦点设置为iframe跨域中的顶部框架。

时间:2012-08-03 08:03:18

标签: javascript html cross-domain same-origin-policy

我的网页上有一个iframe。因此,当在iframe中按下Esc时,我需要将焦点设置为文档的顶部框架。 iframe来自不同的域。 enter image description here

这里的Frame-B URL将是一些abc.com,而frame-A将来自xyz.com

因此,当在Frame-B中触发事件时,我需要关注Frame-A。

我可以在Frame-A和Frame-B中绑定任意数量的事件。

我找到了一种像这样的旧方式“iframe中的iframe中的iframe”。对此不感兴趣。

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:4)

如果您对外框有一定的控制权(让我们说它是您的网站,但仍然与B不同),那么您的问题有很多解决方案。 如果您无法控制外部框架,(例如,因为它是google.com)那么您无法做任何事情。浏览器旨在防止它。见乔纳斯的答案。

那么如果你能控制外页呢?以下任何一种都可以使用:

  • 使用postMessage。您所要做的就是在Frame-A中添加一个非常通用的事件监听器。它可用于"所有" IE7及以下版本的浏览器。
  • 使用服务器作为中间人。从Frame-B向您的服务器发送请求,让Frame-A从那里访问它。如果您不想轮询,可以使用Frame-A中的Web套接字(或者更确切地说是一个好的Web套接字库,如果不存在Web套接字,则可以使用其他技术)。
  • 使用片段标识符hack。您可以在此处阅读(以及其他一些技术):http://softwareas.com/cross-domain-communication-with-iframes