Skip to content

Instantly share code, notes, and snippets.

@rook2pawn
Forked from simevidas/finished-polyfill.js
Created May 29, 2018 01:10
Show Gist options
  • Save rook2pawn/1d3fbc50e955f42ce0dbecfc9c681f70 to your computer and use it in GitHub Desktop.
Save rook2pawn/1d3fbc50e955f42ce0dbecfc9c681f70 to your computer and use it in GitHub Desktop.
Animation.prototype.finished polyfill
// only polyfill .finished in browsers that already support animate()
if (document.body.animate) {
// Chrome does not seem to expose the Animation constructor globally
if (typeof Animation === 'undefined') {
window.Animation = document.body.animate({}).constructor;
}
if (Animation.prototype.finished === undefined) {
Object.defineProperty(Animation.prototype, 'finished', {
get() {
if (!this._finished) {
this._finished = this.playState === 'finished' ?
Promise.resolve() :
new Promise((resolve, reject) => {
this.addEventListener('finish', resolve, {once: true});
this.addEventListener('cancel', reject, {once: true});
});
}
return this._finished;
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment