ボタンクリックなどユーザが自発的にするイベント以外で、「ある要素がある状態になった時」にイベントを発生させたい時、その「ある要素」を監視する必要があります。そんな時にMutationObserver
を使うことで解決します。
サンプル
See the Pen MutationObserver Test by Kazuyoshi Goto (@KazuyoshiGoto) on CodePen.
リンクをクリックするとアラートが出てboxの色が変わりますが、このアラートはクリック時に発生しているわけではなく、boxの属性を監視し、変化があった時にアラートを出すようにしています。
コード
// 対象ノード const target = document.getElementById('box'); // オブザーバーインスタンス準備 const observer = new MutationObserver((mutations) => { alert('属性変わったよ'); }); // オブザーバーの監視対象の設定 const config = { attributes: true //対象ノードの属性の監視を有効にする }; //対象と設定を渡す observer.observe(target , config);
今回は単純に属性が変わったらアラートを出すだけの処理でしたが、属性が変わった時にその属性を評価することで「ある要素がある状態になった時」を判定することができます。
参考: https://developer.mozilla.org/ja/docs/Web/API/MutationObserver