如何在已加载的另一个iframe之后加载iframe
问题描述:
我有一个URL数组,我想为每个URL创建一个iframe。 但我想要的只是创建和加载下一个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只有当。
这是改变URL的功能:
function changeLoc(frm,loc) {
frm.webNavigation.loadURI(loc,
frm.webNavigation.LOAD_FLAGS_NONE,
null, null, null
);
}
我怎么能这样做?
答
这取决于。
- 您是否可以控制
IFRAME
中显示的页面? - 它们是 与主机页面在同一个域上吗?
有四种情况:
如果他们是在同一个域,则可以通过 JavaScript的访问内容。
如果他们是在同一域,您可以修改加载的页面 ,你可以告诉父框架时,从该页面
onload
事件 火灾的IFRAME
加载。如果他们不在同一个域,您可以修改加载 页面,安全限制会阻止直接沟通。但是你 可以加载页面ping服务器上的中央存储库时 的
onload
事件触发如果他们不在同一个域,你不能修改的 加载网页...那么你有麻烦了... :)你将无法 检查何时页面完成加载....嗯..你可以创造一些丑陋的 定时器加载页面在设定的时间间隔......但不要告诉任何人我 告诉你这么...;)
答
如果iframe指向的网址为另一个域,您只需在iframe上放置一个onload事件 - 它会告诉您iframe何时开始加载,但您永远无法通过“相同来源策略”告诉何时加载完成。在这种情况下,页面内部与托管页面隔离。
如果I帧指向相同域,可以插入某种的document.ready代码放到页面,然后可以调用父页面的JavaScript函数宣布,它已经完成加载。
对不起,*这样做 – Noelia
习惯上选择接受的答案...;) – Alex