본문 바로가기

카테고리 없음

[Javascript] ie에서 requestAnimationFrame 지원하기 (Polyfill requestAnimationFrame)

사실 대비라기 보다.. rAF를 지원하지 않는 브라우저일 경우,

제이쿼리 방식처럼 setTimeout() 으로 알아서 변경하여준다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(function requestAnimationFrame_polyfill(){
    var lastTime = 0;
    var vendors = ['webkit''moz','ms','o'];
    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
        window.cancelAnimationFrame =
          window[vendors[x]+'CancelAnimationFrame'|| window[vendors[x]+'CancelRequestAnimationFrame'];
    }
 
    if (!window.requestAnimationFrame)
        window.requestAnimationFrame = function(callback, element) {
            var currTime = new Date().getTime();
            var timeToCall = Math.max(016 - (currTime - lastTime));
            var id = window.setTimeout(function() { callback(currTime + timeToCall); },
              timeToCall);
            lastTime = currTime + timeToCall;
            return id;
        };
 
    if (!window.cancelAnimationFrame)
        window.cancelAnimationFrame = function(id) {
            clearTimeout(id);
        };
}())
cs