* *
If you are not supporting browsers from IE9 and below, you probably don't need this or any equivalent polyfill * *
- Supports ES6 - AMD - CJS & IIFE
- Provides a clean polyfill for requestAnimationFrame & cancelAnimationFrame.
- Tested & working on: IE 5.5+, FF 3+, Opera 11.16+, Safari 4+, Chrome 14+, iOS 3+, Android 2.3+, Android Chrome 28+.
- iOS 6 bug fix without user-agent sniffing.
- Firefox 4 - 10 function mismatch normalization.
- Doesn't modify native functions unless specified.
- AMD compliant.
npm i request-frame --save
| bower i request-frame
| src | release
import requestFrame from 'request-frame'; // ES6
<script src="request-frame.js"></script> // AMD, IIFE
const requestFrame = require('request-frame'); // CJS
requestFrame( request | cancel | native ) request is default.
var request = requestFrame('request'); // window.requestAnimationFrame | setTimeout
var cancel = requestFrame('cancel'); // window.cancelAnimationFrame | cancelTimeout
requestFrame('native'); // re/ declares requestAnimationFrame & cancelAnimationFrame
Below is just an example of the requestAnimationFrame API, see links: MDN, MSDN & W3.
var requestId;
function something( useTimeStamp ){
// Do something here
requestId = request(something);
}
requestId = request(something); // Assigns Id & calls "something"
cancel(requestId); // Cancels frame request
request-frame aims to provide an optimal development consistency with the use of animation timing functions across the large number of browsers and devices. This lib is ideal for those who may want to avoid re-assigning native functions, or avoid interfering with other libs that do. requestFrame() is purposely not a constructor. The intention is for requestAnimationFrame to be used once or few times during execution since multiple task are expected to be more efficient via a single requestAnimationFrame loop compared to several instances.
Supports everything from IE5+
Just do it!
npm run test
To launch port 9999
- ./test/
- ./test/compatibility-assignation-amd.html
- ./test/compatibility-assignation.html
- ./test/compatibility-native-amd.html
- ./test/compatibility-native.html
Browser based testing for RAF is imperative
© 2016 Julien Etienne