当 iframe 位于视口中时,如何获得低帧速率

How to get a LOW framerate when an iframe is in the viewport?

本文关键字:何获得 帧速率 iframe 于视口 视口      更新时间:2023-09-26

当跨域iframe滚动到视口中时,我需要获得帧速率。这是必需的,因为我想使用requestAnimationFrame()从跨域iframe中了解它的位置。例如

var last_time = 0;
var lst_diff = [];
var avg = 0;
function frame_check(current_time){
    var diff = current_time - last_time;
    last_time = current_time;
    if (lst_diff.length > 5){
        lst_diff.shift();
    }
    lst_diff.push(diff);
    var sum = 0;
    lst_diff.forEach(function(val){
       sum += val;
    });
    avg = sum / lst_diff.length;
    // if (avg < some threshold )
    // indicates it is in the viewport
    // do something
    requestAnimationFrame(frame_check);
}
requestAnimationFrame(frame_check);

当它在视口中时,我可以在iframe中做些什么来使其高效,占用很少的空间并显着降低帧速率?我试图

  • canvas中绘制一些东西,但浏览器即使在视口之外也一直在绘制;

  • 应用繁重的CSS样式,如多个text-shadow并更改div的位置,但它效果不佳。我什至无法判断帧速率是否在下降。

谢谢!

我真的不明白你想做什么,但也许你可以用setInterval(frame_check,1000/60)(60 秒检查)非常频繁地检查 iframe 位置。降低帧率对我来说听起来不像是一个解决方案,但也许我错了......