[Edge]。→、、
Web アニメーション Animation の置換状態を文字列で返します。
mdn: これは、アニメーションが削除された場合にアクティブになります。または Animation.persist() が呼び出された場合は永続化されます。
| Animation | Animation | 
|---|
アニメーションの置換状態を表す文字列。値は次のいずれかです:
| active | アニメーションの置換状態の初期値。アニメーションがブラウザーの自動的に塗りつぶしアニメーションを削除する動作によって削除された場合。 | 
|---|---|
| persisted | アニメーションは、Animation.persist() を呼び出して明示的に永続化されています。 | 
| removed | アニメーションは明示的に削除されました。 | 
HTML:
<DIV id=IdTest style="width:1em">■</DIV> <BUTTON id=IdPlay>再生</BUTTON><BR> <BUTTON id=IdSet1>違うアニメーション設定1、play()</BUTTON> <BUTTON id=IdSet2>違うアニメーション設定2、play()</BUTTON> <BR> <SPAN id=IdLog></SPAN>
JavaScript:
KE=new KeyframeEffect(  //アニメーション データの作成:
  IdTest, [  //ターゲット。
    {transform:'translateX(150px)'}  //X軸移動。
  ]
  , {duration:1000, fill:'forwards'}  //10秒掛けて、?。
);
function JobDel(){  //remove イベントの処理:
  D=Ani;  //=[object]:[object Animation]。メイン動作をしてから、新しい動作をさせて動作が終わった所。
詳細
	//effect=[object]:[object KeyframeEffect]
	//startTime=[number]:8259.59
	//currentTime=[number]:1000
	//playbackRate=[number]:1
	//playState=[string]:finished
	//pending=[boolean]:false
	//id=[string]:
	//onfinish=[object]:null
	//oncancel=[object]:null
	//cancel=[function]:function cancel() { [native code] }
	//finish=[function]:function finish() { [native code] }
	//pause=[function]:function pause() { [native code] }
	//play=[function]:function play() { [native code] }
	//reverse=[function]:function reverse() { [native code] }
	//updatePlaybackRate=[function]:function updatePlaybackRate() { [native code] }
	//timeline=[object]:[object DocumentTimeline]
	//replaceState=[string]:active
	//…
}
Ani=new Animation(KE, document.timeline);  //アニメーション作成。
//Ani.persist();
Ani.onremove=JobDel;  //アニメーションが削除されたら…イベント割り当て。
function JobPlay(){  //再生の処理:
  Ani.play();
}
function JobSet1(){  //新しいアニメーション1の処理:
  KE=new KeyframeEffect(  //アニメーション データの作成:
    IdTest, [  //ターゲット。
      {transform:'translateX(200px)'}  //X軸移動。
    ]
    , {duration:1000, fill:'forwards'}  //掛かる時間、?。
  );
  Ani=new Animation(KE, document.timeline);  //アニメーション作成。
  Ani.onremove=JobDel;  //アニメーションが削除されたら…イベント割り当て。
  Ani.play();           //再生。
}
function JobSet2(){
  KE=new KeyframeEffect(  //アニメーション データの作成:
    IdTest, [  //ターゲット。
      {transform:'translateX(100px)'}  //X軸移動。
    ]
    , {duration:1000, fill:'forwards'}  //掛かる時間、?。
  );
  Ani=new Animation(KE, document.timeline);  //アニメーション作成。
  Ani.onremove=JobDel;  //アニメーションが削除されたら…イベント割り当て。
  Ani.play();           //再生。
}
IdPlay.onclick=JobPlay;  //再生ボタンのイベント割り当て。
IdSet1.onclick=JobSet1;  //新しいアニメーション1ボタンのイベント割り当て。
IdSet2.onclick=JobSet2;  //新しいアニメーション2ボタンのイベント割り当て。
function Job(){  //タイマー監視処理:
  IdLog.innerHTML="replaceState:"+Ani.replaceState;  //表示。
}
setInterval(Job, 300);  //タイマー監視。
 remove イベントが発生するタイミング: 次の設定のアニメーション動作が終わった時に発生する。しかも remove イベントなのに replaceState が「active」になっている。
HTML:
<DIV id=IdTest style="width:1em">■</DIV> <BUTTON id=IdSet1>違うアニメーション設定1</BUTTON> <BUTTON id=IdSet2>違うアニメーション設定2</BUTTON> <BR> <SPAN id=IdLog></SPAN>
JavaScript:
function JobDel(){  //remove イベントの処理:
  IdLog.innerHTML="replaceState:"+Ani.replaceState;  //表示
  alert("replaceState:"+Ani.replaceState);           //表示
}
Ani=IdTest.animate({transform:'translateX(150px)'}, {duration:1000, fill:'forwards'});
Ani.onremove=JobDel;  //イベント割り当て。
function JobSet1(){
  Ani=IdTest.animate({transform:'translateX(100px)'}, {duration:1000, fill:'forwards'});
  Ani.onremove=JobDel;
}
function JobSet2(){
  Ani=IdTest.animate({transform:'translateX(200px)'}, {duration:1000, fill:'forwards'});
  Ani.onremove=JobDel;
}
IdSet1.onclick=JobSet1;
IdSet2.onclick=JobSet2;
function Job(){
  IdLog.innerHTML="replaceState:"+Ani.replaceState;
}
setInterval(Job, 300);