获取具有多个源的每个iframe的加载时间

时间:2013-02-24 14:11:59

标签: javascript

我正在尝试获取每个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>

这个方法对我来说不起作用,因为它同时加载了所有的iframe,而不是一个一个地加载。

如何在第一段代码中使用计算和显示iframe加载时间的第二代码方法?

1 个答案:

答案 0 :(得分: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正在检查的网站,因为现在大多数网站都禁止使用iframe。 如果您仍想测量没有iframe的加载并使用javascript,您可以使用$.get请求来模仿同样的事情。