2014-12-03 18 views
2

當跨域iframe滾動到視口中時,我需要獲得LOW幀率。這是需要的,因爲我想使用requestAnimationFrame()來了解它在跨域iframe內的位置。例如,iframe在視口中時如何獲得LOW幀率?

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的位置,但效果不佳。我甚至無法分辨幀速是否下降。

謝謝!

回答

0

我真的不明白你在做什麼,但也許你可以用setInterval(frame_check,1000/60)(60秒檢查)非常頻繁地檢查iframe的位置。刪除幀率聽起來不像是我的解決方案,但也許我錯了...

+0

獲取跨域iframe(在其中)的位置是不可能的。我會在問題中說清楚。 – ShuaiYuan 2014-12-03 11:40:09

+0

你有權訪問iframe中包含的頁面嗎? – n00dl3 2014-12-03 11:43:49

+0

否,我可以使用'postMessage' – ShuaiYuan 2014-12-03 11:53:20