如何在另一个Iframe中访问Iframe



我有一个网页,它包含一些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将打开。现在,我需要调用一个javascript函数,该函数已从frame3加载到frame2

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

我尝试使用document.getElementById("frame2");,但它为null。因此,我认为可能有一种不同的访问iframe的方式。有人能帮忙吗?

您应该能够使用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>

最新更新