Javascript—在iframe开始加载之前获取时间值
我按如下方式加载帧:Javascript—在iframe开始加载之前获取时间值,javascript,Javascript,我按如下方式加载帧: $url = array(); $url[] = 'url1.com'; $url[] = 'url2.com'; echo "<div id='content'> </div>"; foreach($url as $u){ echo '<div class="frame_container"> <iframe onload="time_after_frame_loaded();" width="200
$url = array();
$url[] = 'url1.com';
$url[] = 'url2.com';
echo "<div id='content'> </div>";
foreach($url as $u){
echo '<div class="frame_container">
<iframe onload="time_after_frame_loaded();" width="200" height="200" id="myiframe" src="http://www.'.$u.'"></iframe>
<div class="loadingtime"></div>
</div>';
}
如何计算每个帧开始加载之前的时间
编辑:
使用以下PHP:
$i = 0;
foreach($url as $u){
echo '<div class="frame_container">
<script type="text/javascript">
(function () {
var iframe = document.createElement("iframe");
iframe.width = "200";
iframe.height = "200";
iframe.id = "myiframe' . $i . '";
var begin_time = (new Date()).getTime();
iframe.onload = function () {
time_after_frame_loaded(begin_time);
};
iframe.src = "http://www.' . $u . '";
document.body.appendChild(iframe);
})();
</script>
<div class="loadingtime"></div>
</div>';
$i++;
}
我不确定它是否是最有效的方法,但它应该获得正确的“开始”时间并将其与每个iframe关联。您是否尝试在onload之外调用函数?您的循环将多个
元素分配给相同的id
属性-“myiframe”。那不好。我因为某种原因得到了太高的值。我正在尝试获取每个帧的加载时间(result=(frame\u loaded-begin\u time)/1000
)。结果值不断将自身添加到上一个值(如果第一帧结果值为~2,则下一帧结果值将大于2,之后的下一帧结果值将大于上一帧,依此类推(我加载了3帧,最后一个结果值为~15,这不可能是正确的))。@Edgar Hmm有趣。我想我已经处理好了。嗯,我刚刚编辑了我的答案——试试看,如果它能解决问题,请告诉我。但你是对的,事情正在发生变化。我认为它工作正常,但它不断地增加结果值。我是用javascript写的-result=(frame\u-load-begin\u-time)/1000;控制台日志(结果+秒)代码>。结果是每帧的加载时间(以秒为单位)。当我加载多个帧时,它的工作方式如下-value1=2.14,value2=1,41+value1,value3=0,61+value2(不断添加上一个值)@埃德加啊,好的。您知道变量应该用var
声明吗?所以不用result=blah-blah-blah代码>,使用var result=blah blah blah代码>是的,我正在使用var,但仍然无法按我希望的方式工作。Eddite使用javascript编写了OP
<script type="text/javascript">
function time_after_frame_loaded(begin_time) {
var result = 0; //trying to reset the value for each frame
var frame_loaded = (new Date()).getTime();
// console.log("Begin: " + begin_time + ", Loaded: " + frame_loaded);
result = (frame_loaded - begin_time)/1000;
console.log(result + "sec");
}
</script>
6.265sec
6.671sec
8.905sec
10.077sec
$i = 0;
foreach($url as $u){
echo '<div class="frame_container">
<script type="text/javascript">
(function () {
var iframe = document.createElement("iframe");
iframe.width = "200";
iframe.height = "200";
iframe.id = "myiframe' . $i . '";
var begin_time = (new Date()).getTime();
iframe.onload = function () {
time_after_frame_loaded(begin_time);
};
iframe.src = "http://www.' . $u . '";
document.body.appendChild(iframe);
})();
</script>
<div class="loadingtime"></div>
</div>';
$i++;
}
function time_after_frame_loaded(begin_time) {
var frame_loaded = (new Date()).getTime();
console.log("Begin: " + begin_time + ", Loaded: " + frame_loaded);
}