【问题标题】:How to access Iframe inside another Iframe如何在另一个 iframe 中访问 iframe
【发布时间】:2020-10-08 16:52:04
【问题描述】:

我有一个网页,它包含几个 iframe,它有这样的 iframe,

<html>
<iframe name="frame1" id="frame1" src="https://example.com">

    <iframe name="frame2" id="frame2" src="https://def.com/sample1.jsp"></iframe>
    <iframe name="frame3" id="frame3" src="https://def.com/sample2.jsp"></iframe>

</iframe>
</html>

请注意,单击 frame2 上的按钮时会打开 frame3。现在我需要调用一个从 frame3 加载了 frame2 的 javascript 函数。

很明显,第 2 帧和第 3 帧都来自同一个来源,所以我没想到会出现跨域帧问题。如何获取对 frame2 的引用并调用该函数?假设函数名称是 doSomething()

我正在尝试使用 document.getElementById("frame2");,但它给出了 null。所以我认为可能有不同的方式来访问 iframe。有人可以帮忙吗?

【问题讨论】:

    标签: javascript iframe cross-domain


    【解决方案1】:

    您应该可以使用contentWindow 执行此操作。下面是一个示例(请注意,当在 SO 上作为 Snippet 运行时,这将产生同源问题):

    let iframe1 = document.getElementById("frame1").contentWindow;
    let iframe2 = iframe1.document.getElementById("frame2");
    let iframe3 = iframe1.document.getElementById("frame3");
    <iframe name="frame1" id="frame1">
      <iframe name="frame2" id="frame2"></iframe>
      <iframe name="frame3" id="frame3"></iframe>
    </iframe>

    【讨论】:

      猜你喜欢
      • 2012-02-18
      • 1970-01-01
      • 2017-07-30
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多