一个接一个地加载IFrame

时间:2013-06-03 17:37:30

标签: php javascript iframe

您好我正在尝试在页面上加载10个iframe,但我希望它们一个接一个地加载...

Ex:第一次施加负荷,第二次施加负荷时应开始加载......等等

我正在尝试这个

$i = 1;
while($i < 10){
    echo '<iframe src="/get_data.php?id='.$id.'&i='.$i.'"></iframe>';
    $i++;
    }

这里有一个问题,所有这些都加载在一起...有没有办法可以用javascript or php

来做到这一点

3 个答案:

答案 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