如何在另一个已加载的iframe之后加载一个iframe

How to load an iframe after another iframe that has loaded

本文关键字:加载 iframe 一个 之后 另一个      更新时间:2023-09-26

我有一个URL数组,我想为每个URL创建一个iframe。但我想要的是,只有在前一个iframe完全加载时,才能创建并加载下一个ifame。

这是创建iframe:的函数

function loadSubsequencePages(links){
var id = document.getElementsByTagName("iframe").length;
    for(var i=0; i<links.length;i++){
        var frame = document.createElement("iframe");
        frame.setAttribute("id","frame"+id);
        frame.setAttribute("src","about:blank");
        document.getElementById('frames').appendChild(frame);
        changeLoc(document.getElementById("frame"+id),links[i].href);
    }
}

只有当我创建的实际iframe被加载时,我才想移动到下一个I。

这是更改URL:的函数

function changeLoc(frm,loc) {
        frm.webNavigation.loadURI(loc, 
                                frm.webNavigation.LOAD_FLAGS_NONE,
                                null, null, null
                              );
    }

我该怎么做?

这取决于情况。

  1. 您可以控制IFRAME中显示的页面吗
  2. 他们是与托管页面在同一个域上

有四种情况:

  • 如果它们在同一域上,您可以通过JavaScript。

  • 如果它们在同一域上,并且您可以修改加载的页面,可以在onload事件发生时通知父帧从CCD_ 3中加载的页面激发。

  • 如果它们不在同一个域上,并且您可以修改加载的页面,安全限制将阻止直接通信。但是你当onload事件触发

  • 如果它们不在同一个域上,并且您不能修改已加载页面。。。你有麻烦了…:(你将无法检查页面何时完成加载。。。。好你可以制造一些丑陋的东西计时器以设定的间隔加载页面。。。但不要告诉任何人我告诉过你…;(

如果iframe指向另一个域的URL,您所能做的就是在您的iframe上放置一个onload事件-它会告诉您iframe何时开始加载,但由于同源策略,您永远无法知道加载何时完成。在这种情况下,里面的页面与宿主页面是隔离的。

如果iframe指向相同的域,则可以在页面中插入某种document.ready代码,然后该代码可以调用父页面中的JavaScript函数,宣布其已完成加载。