2013-06-03 76 views
1

喜后我试图加载页面上10次的I帧,但我希望他们能够加载一个一个后...负载的IFrame另一个

例如:1 sholud负载月1日,当它完成加载第二个应加载启动......等等

我试图此

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

这里有,他们都一起装入一个问题...有没有办法我可以javascript or php

+1

退房这个帖子:http://codecorner.galanter.net/2011/11/02/how-to- load-iframes-in-order-prior-priority /这里描述的方法允许以任何指定顺序加载iframe。 –

回答

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 
+0

Thx它工作良好;) – Harinder

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加载。