mirror of
https://github.com/openseadragon/openseadragon.git
synced 2024-11-22 13:16:10 +03:00
Merge pull request #104 from openseadragon/raf
Our requestAnimationFrame no longer changes the global window object
This commit is contained in:
commit
e5187e4864
@ -1644,33 +1644,31 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){
|
||||
};
|
||||
|
||||
|
||||
// Adding support for HTML5's requestAnimationFrame as suggested by acdha
|
||||
// implementation taken from matt synders post here:s
|
||||
// Adding support for HTML5's requestAnimationFrame as suggested by acdha.
|
||||
// Implementation taken from matt synder's post here:
|
||||
// http://mattsnider.com/cross-browser-and-legacy-supported-requestframeanimation/
|
||||
(function( w ) {
|
||||
|
||||
// most browsers have an implementation
|
||||
w.requestAnimationFrame = w.requestAnimationFrame ||
|
||||
var requestAnimationFrame = w.requestAnimationFrame ||
|
||||
w.mozRequestAnimationFrame ||
|
||||
w.webkitRequestAnimationFrame ||
|
||||
w.msRequestAnimationFrame;
|
||||
|
||||
w.cancelAnimationFrame = w.cancelAnimationFrame ||
|
||||
var cancelAnimationFrame = w.cancelAnimationFrame ||
|
||||
w.mozCancelAnimationFrame ||
|
||||
w.webkitCancelAnimationFrame ||
|
||||
w.msCancelAnimationFrame;
|
||||
|
||||
|
||||
// polyfill, when necessary
|
||||
if ( w.requestAnimationFrame && w.cancelAnimationFrame ) {
|
||||
//we cant assign window.requestAnimationFrame directly to $.requestAnimationFrame
|
||||
//without getting Illegal Invocation errors in webkit so call in a
|
||||
//wrapper
|
||||
$.requestAnimationFrame = function( callback ){
|
||||
return w.requestAnimationFrame( callback );
|
||||
if ( requestAnimationFrame && cancelAnimationFrame ) {
|
||||
// We can't assign these window methods directly to $ because they
|
||||
// expect their "this" to be "window", so we call them in wrappers.
|
||||
$.requestAnimationFrame = function(){
|
||||
return requestAnimationFrame.apply( w, arguments );
|
||||
};
|
||||
$.cancelAnimationFrame = function( requestId ){
|
||||
return w.cancelAnimationFrame( requestId );
|
||||
$.cancelAnimationFrame = function(){
|
||||
return cancelAnimationFrame.apply( w, arguments );
|
||||
};
|
||||
} else {
|
||||
var aAnimQueue = [],
|
||||
|
@ -62,4 +62,30 @@
|
||||
});
|
||||
});
|
||||
|
||||
// ----------
|
||||
asyncTest("requestAnimationFrame", function() {
|
||||
var timeWatcher = Util.timeWatcher();
|
||||
|
||||
OpenSeadragon.requestAnimationFrame(function() {
|
||||
ok(true, 'frame fired');
|
||||
timeWatcher.done();
|
||||
});
|
||||
});
|
||||
|
||||
// ----------
|
||||
asyncTest("cancelAnimationFrame", function() {
|
||||
var frameFired = false;
|
||||
|
||||
setTimeout(function() {
|
||||
strictEqual(frameFired, false, 'the frame never fired');
|
||||
start();
|
||||
}, 150);
|
||||
|
||||
var frameId = OpenSeadragon.requestAnimationFrame(function() {
|
||||
frameFired = true;
|
||||
});
|
||||
|
||||
OpenSeadragon.cancelAnimationFrame(frameId);
|
||||
});
|
||||
|
||||
})();
|
||||
|
Loading…
Reference in New Issue
Block a user