From 7b5e019981f352add88be2984de68e553d1bfa93 Mon Sep 17 00:00:00 2001 From: Matias Niemelä Date: Fri, 14 Mar 2014 12:01:45 -0400 Subject: fix($$rAF): always fallback to a $timeout incase native rAF isn't supported Closes #6654 --- src/ng/raf.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'src/ng/raf.js') diff --git a/src/ng/raf.js b/src/ng/raf.js index f4eb31c0..e07adbfe 100644 --- a/src/ng/raf.js +++ b/src/ng/raf.js @@ -1,7 +1,7 @@ 'use strict'; function $$RAFProvider(){ //rAF - this.$get = ['$window', function($window) { + this.$get = ['$window', '$timeout', function($window, $timeout) { var requestAnimationFrame = $window.requestAnimationFrame || $window.webkitRequestAnimationFrame || $window.mozRequestAnimationFrame; @@ -10,14 +10,22 @@ function $$RAFProvider(){ //rAF $window.webkitCancelAnimationFrame || $window.mozCancelAnimationFrame; - var raf = function(fn) { - var id = requestAnimationFrame(fn); - return function() { - cancelAnimationFrame(id); - }; - }; + var rafSupported = !!requestAnimationFrame; + var raf = rafSupported + ? function(fn) { + var id = requestAnimationFrame(fn); + return function() { + cancelAnimationFrame(id); + }; + } + : function(fn) { + var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666 + return function() { + $timeout.cancel(timer); + }; + }; - raf.supported = !!requestAnimationFrame; + raf.supported = rafSupported; return raf; }]; -- cgit v1.2.3