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

时间:2011-11-04 20:52:42

标签: javascript iframe load

我有一系列网址,我想为每个网址创建一个iframe。 但我想要的是只有当前一个iframe完全加载时才创建并加载下一个iframe。

这是创建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被加载时移动到下一个。

这是更改网址的功能:

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

我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果iframe指向另一个域的网址,您只能在iframe上添加一个onload事件 - 这将告诉您Iframe何时开始加载,但您将会由于同源策略,永远无法分辨负载何时完成。在这种情况下,内部页面与托管页面隔离。

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

答案 1 :(得分:1)

这取决于。

  1. 您是否可以控制IFRAME s?
  2. 中显示的页面
  3. 是吗? 在与托管页面相同的域中?
  4. 有四种情况:

    • 如果他们在同一个域,您可以通过访问内容 的JavaScript。

    • 如果它们位于相同的域中,您可以修改已加载的域 页面,您可以在onload事件时告诉父框架 从IFRAME

    • 中加载的页面触发
    • 如果不在同一个域中,您可以修改加载的 页面,安全限制将阻止直接通信。但是你 可以从加载的页面ping服务器上的中央存储库 onload事件触发

    • 如果不在同一个域中,则无法修改 装好的页面...好吧,你有麻烦...... :)你将无法做到 检查页面加载完成后......好吧..你可能会创建一些丑陋的东西 计时器以设定的间隔加载页面......但是不要告诉任何人我 告诉过你......;)