保持相容性

當然,就像瀏覽器 JavaScript 中的大多數東西一樣,你不能指望每個地方的所有東西都是一樣的。在這種情況下,requestAnimationFrame 在某些平臺上可能有一個字首,並且命名方式不同,例如 webkitRequestAnimationFrame。幸運的是,有一種非常簡單的方法可以將所有已知的差異分組到 1 個函式中:

window.requestAnimationFrame = (function(){
    return window.requestAnimationFrame ||
        window.webkitRequestAnimationFrame ||
        window.mozRequestAnimationFrame ||
        function(callback){
            window.setTimeout(callback, 1000 / 60);
        };
})();

請注意,最後一個選項(在找不到現有支援時填寫)將不會返回要在 cancelAnimationFrame 中使用的 id。然而,有一個有效的 polyfill 編寫,修復了這個問題。