jQuery vs window.setInterval vs requestAnimationFrame

Ieri am avut deosebita plăcere să constant că am o problemă la ultimele 14 site-uri la care am lucrat și am folosit window.setInterval. Problema zice așa: dacă setez un timer să facă ceva (în cazul meu o animație) și schimb tabul, după câteva secunde timerul meu o cam ia razna. Iar problema asta se întâmplă fix în toate browserele ce suportă requestAnimationFrame.

Problema este că prin utlimele versiuni de jQuery a apărut următorul cod:

Iar requestAnimationFrame pare că funcționează ușor diferit, mai ales în momentul în care se schimbă tabul activ.

Soluția

După ce am încercat inclusiv tămâia și aghiazma, am zis să încerc următoarele chestii:

slide.filter(function(){ return !$(this).is(':animated'); }).animate({ // http://goo.gl/ycCiz
//some awesome animation
});

Merge. Doar că toată povestea aia din filter nu prea îmi place. Prea mare cârnatu’, iar pseudoselectorii de genul :animated pot fi destul de lenți câteodată. Și am încercat și stop():

slide.stop(1,1).animate({ // http://goo.gl/TFRbF
//same awesome animation
});

Merge și asta fără probleme.

Aici găsești o explicație mai detaliată a problemei.

Ți-a plăcut articolul? Lasă un comentariu!

You can insert code snippets using BBcode:
[js].[/js] [html].[/html] [php].[/php] [css].[/css]
You can also use some HTML tags:
<blockquote>.</blockquote> <code>.</code> <a href="">.</a> <strong>.</strong> <em>.</em>