我有一系列网址,我想为每个网址创建一个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
);
}
我该怎么做?
答案 0 :(得分:1)
如果iframe指向另一个域的网址,您只能在iframe上添加一个onload事件 - 这将告诉您Iframe何时开始加载,但您将会由于同源策略,永远无法分辨负载何时完成。在这种情况下,内部页面与托管页面隔离。
如果iframe指向相同域,您可以在页面中插入某种 document.ready 代码,然后可以在父页面中调用JavaScript函数宣布已完成装载。
答案 1 :(得分:1)
这取决于。
IFRAME
s?有四种情况:
如果他们在同一个域,您可以通过访问内容 的JavaScript。
如果它们位于相同的域中,您可以修改已加载的域
页面,您可以在onload
事件时告诉父框架
从IFRAME
。
如果不在同一个域中,您可以修改加载的
页面,安全限制将阻止直接通信。但是你
可以从加载的页面ping服务器上的中央存储库
onload
事件触发
如果不在同一个域中,则无法修改 装好的页面...好吧,你有麻烦...... :)你将无法做到 检查页面加载完成后......好吧..你可能会创建一些丑陋的东西 计时器以设定的间隔加载页面......但是不要告诉任何人我 告诉过你......;)