Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript—在iframe开始加载之前获取时间值_Javascript - Fatal编程技术网

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);
}