В исходном коде jQuery для v1.6.2 я вижу, что requestAnimationFrame
используется, если он присутствует. Я не изучил код очень подробно, чтобы увидеть, что он используется для всего, для чего он может быть использован, но он используется в разделе анимации кода вместо вызова setInterval()
. Вот код из 1.6.2:
// Start an animation from one number to another
custom: function( from, to, unit ) {
var self = this,
fx = jQuery.fx,
raf;
this.startTime = fxNow || createFxNow();
this.start = from;
this.end = to;
this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
this.now = this.start;
this.pos = this.state = 0;
function t( gotoEnd ) {
return self.step(gotoEnd);
}
t.elem = this.elem;
if ( t() && jQuery.timers.push(t) && !timerId ) {
// Use requestAnimationFrame instead of setInterval if available
if ( requestAnimationFrame ) {
timerId = true;
raf = function() {
// When timerId gets set to null at any point, this stops
if ( timerId ) {
requestAnimationFrame( raf );
fx.tick();
}
};
requestAnimationFrame( raf );
} else {
timerId = setInterval( fx.tick, fx.interval );
}
}
},
Я пока не использую 1.6.4, поэтому не знаю об этой версии. Если его нет в этой версии, возможно, возникли некоторые проблемы, поэтому он был удален.
EDIT:
Если вы прочитаете это сообщение в блоге , звучит так, как будто оно было извлечено из 1.6.3 и, возможно, будет возвращено в 1.7, и главная причина, по которой его вытащили, заключается в том, что он сломал некоторые вещи, которые люди «неправильно» использовать очередь анимации для (хотя, возможно, это вопрос мнения).