2013-02-24 57 views
1

我想要獲得每個iframe的加載時間,然後顯示時間。下面是代碼我現在有(沒有裝載時間計算):獲取多個來源的每個iframe的加載時間

<iframe id="1" width="100" height="100" src=""></iframe> 

<script type="text/javascript"> 
$(document).ready(function(){ 
    var array = ['http://www.example1.com', 'http://www.example2.com', 'http://www.example3.com']; 
    $('#1').on('load', function() {     
     $('#1').attr('src', array.pop());    
    }).attr('src', array.pop()); 
}); 
</script> 

它把鏈接從陣列到iframe,裝載每iframe中一個接一個。

這是我用來做得到加載時間之前:

<script type="text/javascript"> 
beforeload = (new Date()).getTime(); 
function pageloadingtime(i) 
{ 

    var afterload = (new Date()).getTime(); 
    var seconds = (afterload-beforeload)/1000; 
    document.getElementById("loadingtime"+i).innerHTML = seconds; 
} 
</script> 

對我來說這種方法沒有工作,因爲它加載在同一時間所有的I幀,而不是裝載一個接一個。

如何在第一代碼中使用第二代碼計數和顯示iframe加載時間的方法?

+1

不是一個答案,但如果你只需要知道,加載每個iframe需要多長時間,你可以在DevTools的'Net'選項卡上檢查它。 – Teemu 2013-02-24 14:30:55

回答

0

如何:

$(document).ready(function(){ 
var array = ['http://www.example1.com', 'http://www.example2.com', 'http://www.example3.com']; 
var beforeLoad = (new Date()).getTime(); 
var loadTimes = []; 
$('#1').on('load', function() { 
    loadTimes.push((new Date()).getTime());     
    $('#1').attr('src', array.pop()); 
    if (array.length === 0) { 
     $.each(loadTimes, function(index, value) { 
      alert(value - beforeLoad); 
     }); 
    } 
}).attr('src', array.pop()); 
}); 

阿里納斯 你必須確保你可以通過一個iframe訪問要檢查的網站,因爲大部分網站現在不允許I幀。 如果你仍然想測量沒有iframe的負載並使用javascript,你可以使用$.get請求來模仿相同的事情。