您好我正在尝试在页面上加载10个iframe,但我希望它们一个接一个地加载...
Ex:第一次施加负荷,第二次施加负荷时应开始加载......等等
我正在尝试这个
$i = 1;
while($i < 10){
echo '<iframe src="/get_data.php?id='.$id.'&i='.$i.'"></iframe>';
$i++;
}
这里有一个问题,所有这些都加载在一起...有没有办法可以用javascript or php
答案 0 :(得分:3)
PHP不会延迟输出到浏览器。它会立即在页面上放置所有10个iframe,它们会同时加载。 PHP是服务器端,这意味着它无法对浏览器从外部源接收的事件做出反应。 PHP只用于提供页面,然后调用它退出,直到它收到另一个请求。
对于您要做的事情,Javascript将是关键。在页面加载时创建一个函数来添加一个iframe,创建一个监听器来等待iframe完全加载。收到回复后,请创建下一个iframe。这是一个大纲。查看:How do I fire an event when a iframe has finished loading in jQuery?(第二个回答),了解如何监听iframe加载。
答案 1 :(得分:2)
我相信您应该使用JavaScript和iframe的onLoad事件。 http://www.w3schools.com/jsref/event_frame_onload.asp
只需对其进行编码即可在加载iframe后开始加载下一个。
答案 2 :(得分:2)
根据此回复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