首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从iframe访问父窗口(跨域)

从iframe访问父窗口(跨域)
EN

Stack Overflow用户
提问于 2012-03-20 22:01:54
回答 4查看 100.2K关注 0票数 11

我遇到过从iFrame访问父窗口的任务,如果iFrame中的窗口是从另一个域加载的。如果我理解正确的话,现在所有的现代浏览器都允许这样做。所以我在这里找到最好的解决方案。

我将用下一种方法来完成这项工作:

我有一个包含iFrame的覆盖图。这将取代弹出窗口,以防止弹出窗口阻止程序阻止我的内容。任务是在iFrame中的文档完成某些工作后重新加载主页。在将加载到iFrame的文档中,我将添加

<div id="is_closed" class="false"></div>

在父窗口中,我将添加函数,该函数将每秒钟被调用一次,并检查此div是否仍有类名"false“。当它被修改为"true“时,我会调用一些回调函数。

如果你有更好的解决方案,请与我分享。都会感谢任何帮助。

编辑:这是不可能的,因为不仅不可能从子窗口操作父窗口,反之亦然。我的想法是从父窗口操作子窗口。我错了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-11 01:27:06

如果我是你,我会去看看window.postMessage。它可能会做你想做的事情:

有关参考,请参阅以下内容:

票数 41
EN

Stack Overflow用户

发布于 2013-07-19 16:13:24

假设您已经准备好更改这两个页面。

票数 7
EN

Stack Overflow用户

发布于 2019-05-06 03:38:31

另一种方法是:将iframes src设置为加载后500毫秒左右的javascript:链接。示例:

setTimeout(function() {
  document.getElementsByTagName("iframe")[0].src = `javascript: 
      (function(){
          setInterval(function() {
          if (document.getElementById("is_closed").className.match(/true/g)) {
              ...//see @jeremysawesome on how to do window.postMessage
          }
      })()`
}, 500);

虽然@jeremysawesome的答案确实有效,但这将适用于嵌入式iframe,无论主域是什么,这在与blogspot.com等域名上托管的网站合作时非常棒,因为这些域名不允许您轻松更改此类内容……

现在显然你仍然需要启动window.postMessage,可以在@jeremysawesome 's answer上找到更多关于它的信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9788328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档