保持相容性
當然,就像瀏覽器 JavaScript 中的大多數東西一樣,你不能指望每個地方的所有東西都是一樣的。在這種情況下,requestAnimationFrame
在某些平臺上可能有一個字首,並且命名方式不同,例如 webkitRequestAnimationFrame
。幸運的是,有一種非常簡單的方法可以將所有已知的差異分組到 1 個函式中:
window.requestAnimationFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000 / 60);
};
})();
請注意,最後一個選項(在找不到現有支援時填寫)將不會返回要在 cancelAnimationFrame
中使用的 id。然而,有一個有效的 polyfill 編寫,修復了這個問題。