嗨,我正在尝试加载10个iframe在一个页面上,但我希望他们加载一个接一个…
例:第一个应该先加载,当它完成加载时第二个应该开始加载…诸若此类
我在试这个
$i = 1;
while($i < 10){
echo '<iframe src="/get_data.php?id='.$id.'&i='.$i.'"></iframe>';
$i++;
}这里有一个问题,所有这些都加载在一起。有没有一种方法可以用javascript or php做到这一点?
发布于 2013-06-04 01:57:10
基于此响应Dynamically create an iframe and attach onload event to it
你可以这样做:
var urls_to_load = ["http://url.com","http://url2.com","http://url3.com","http://url4.com"];
var i = 0;
function loadIframeAndcheckIfReady(){
var current_url = urls_to_load[i];
alert(i);
frame = document.createElement('iframe');
document.body.appendChild(frame);
frame.setAttribute('src',current_url);
var inter = window.setInterval(function() {
if (frame.contentWindow.document.readyState === "complete") {
window.clearInterval(inter);
i++; //Now we have one url more...
if(i < urls_to_load.length)loadIframeAndcheckIfReady(); //recursively call the function until i it's iqual to urls_to_load.length
}
}, 100);
}
loadIframeAndcheckIfReady(); //Start process发布于 2013-06-04 01:43:37
PHP不会延迟输出到浏览器。它将把所有10个iframe一次放在页面上,它们将同时加载。PHP是服务器端的,这意味着它不能对您的浏览器从外部源接收到的事件做出反应。PHP只是提供页面服务,然后调用它退出,直到它收到另一个请求。
对于你正在尝试做的事情,Javascript将是关键。在页面加载时创建一个函数来添加iframe,创建一个侦听器来等待iframe完全加载。当它收到响应时,创建您的下一个iframe。这是一个提纲。查看:How do I fire an event when a iframe has finished loading in jQuery? (第二个答案),看看如何监听iframe加载。
发布于 2013-06-04 01:43:14
我认为你应该使用JavaScript和iframe的onLoad事件。http://www.w3schools.com/jsref/event_frame_onload.asp
只需编写代码,一旦加载了iframe,它就会开始加载下一个iframe。
https://stackoverflow.com/questions/16902575
复制相似问题