检测何时从第三个(父)iframe加载另一个iframe中的iframe

时间:2018-02-09 10:02:20

标签: javascript iframe settimeout

Brainf ...使用iframe。

所以,当前页面结构:

page -> main_iframe -> iframe1 -> iframe2

脚本在“main_iframe”中执行。 这个“main_iframe”有“iframe1”,“iframe1”里面有“iframe2”:

我想更改iframe2的宽度= 100%,iframe1位于main_iframe内部

所以我正在“main_iframe”执行以下js并且它可以工作:

document.querySelector('#iframe1').onload = function() {

setTimeout(function(){
        document.querySelector('#iframe1').contentDocument.querySelectorAll("iframe")[0].style.width = '100%';
 }, 3000); 

}

但是如何删除超时计时器,以便在iframe2加载后立即呈现?

我试过以下:

document.querySelector('#iframe1').onload = function() {

document.querySelector('#iframe1').contentDocument.querySelectorAll("iframe")[0].onload = function () {
        document.querySelector('#iframe1').contentDocument.querySelectorAll("iframe")[0].style.width = '100%';
  }

};

但是没有运气,在上火后没有任何事情发生。

1 个答案:

答案 0 :(得分:1)

您可以在加载事件处理程序中使用this引用外部iframe,这使得它更加整洁。这应该做你需要的......

document.querySelector("#iframe1").addEventListener("load", function() {
    this.contentDocument.querySelector("iframe").style.width = "100%";
});