The remove
event of the Animation
interface fires when the animation is automatically removed by the browser.
The remove
event of the Animation
interface fires when the animation is automatically removed by the browser.
Use the event name in methods like addEventListener()
, or set an event handler property.
js
addEventListener('remove', (event) => { }) onremove = (event) => { }
An AnimationPlaybackEvent
. Inherits from Event
.
In addition to the properties listed below, properties from the parent interface, Event
, are available.
AnimationPlaybackEvent.currentTime
Read only
The current time of the animation that generated the event.
AnimationPlaybackEvent.timelineTime
Read only
The time value of the timeline of the animation that generated the event.
In this example we have a <button id="start">
element, and an event listener that runs whenever the mouse moves. The mousemove
event handler sets up an animation that animates the <button>
to the position of the mouse pointer. This could result in a huge animations list, which could create a memory leak. For this reason, modern browsers automatically remove forwards-filling animations that are overridden by other animations.
The number of animations created is displayed. A remove
event listener is used to count and display the number of animations removed as well.
All but one of the animations should eventually be removed.
html
<button id="start">Click to drag</button> <br /> <button id="reset">Reset example</button> <p> Click the button to start the animation (disabled by default to protect those who suffer migraines when experiencing such animations). </p> <p>Animations created: <span id="count-created">0</span></p> <p>Animations removed: <span id="count-removed">0</span></p>
css
:root, body { margin: 0; padding: 0; height: 100%; } button { margin: 0.5rem 0; }
js
const button = document.querySelector("#start"); let created = 0; let removed = 0; button.addEventListener( "click", () => { document.body.addEventListener("mousemove", (event) => { const animation = button.animate( { transform: `translate(${event.clientX}px, ${event.clientY}px)` }, { duration: 500, fill: "forwards" }, ); created++; showCounts(); // the remove event fires after the animation is removed animation.addEventListener("remove", () => { removed++; showCounts(); }); }); }, { once: true }, ); function showCounts() { document.getElementById("count-created").textContent = created; document.getElementById("count-removed").textContent = removed; } const reset = document.querySelector("#reset"); reset.addEventListener("click", () => { document.location.reload(); });
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
remove_event |
84 | 84 | 75 | No | 70 | 13.1 | 84 | 84 | 79 | 60 | 13.4 | 14.0 |
Animation
, AnimationPlaybackEvent
Animation.replaceState
, to check whether an animation has been removedAnimation.persist()
, to prevent removal of an animation
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Animation/remove_event