Cross-browser requestAnimationFrame