極めて有用なDOM API-MutationObserverリスニングノードの変化の詳細
3786 ワード
今日は役に立つDOM APIを紹介します.
MutationObserver
背景の使用
ページまたは親DOMは、次のような統一コールバックを行うために、子ノードの変化をリスニングする必要があります.特定属性名の変更、例えばclassなど 属性の変化 DOMツリー全体の中性子ノードの変化 MutationObserverの紹介
ここではMDNの公式紹介を採用し,MutationObserverインタフェースはDOMツリーへの変更を監視する能力を提供する.DOM 3 Events仕様の一部である古いMutation Events機能の代替品として設計されています.
MutationObserverには、主に3つの方法が含まれています.具体的には、次の例を参照してください. disconnect()-MutationObserverインスタンスが受信を継続することを阻止する通知 observe()-設定MutationObserverはDOMで指定されたオプションに一致する を変更する. takeRecords()-MutationObserverの通知キューから処理対象のすべての通知 を削除します.
インスタンス&例
MutationObserver()でインスタンスを作成できます.次に使用例を示します.
configの値の紹介
前述のconfigは、MutationObserverInit辞書で、MutationObserverの構成を説明しています.構成には、次のオプション属性があります(必須属性はありません).
ツールバーの
紹介する
attributeFilter
監視する特定の属性名の配列.この属性が含まれていない場合、すべての属性の変更によって変更通知がトリガーされます.デフォルトはありません.
attributeOldValue
ノードのプロパティ変更を監視すると、このプロパティをtrueに設定すると、変更されたプロパティの前の値が記録されます.デフォルトはありません.
attributes
trueに設定して、監視されている要素の属性値の変更を観察します.デフォルトはfalseです.
characterData
trueに設定して、指定したターゲットノードまたはサブノードツリーに含まれるノードの文字データの変化を監視します.デフォルトはありません.
characterDataOldValue
trueに設定して、監視ノードでテキストが変更されたときにノードテキストの前の値を記録します.デフォルトはありません.
childList
ターゲットノード(subtreeがtrueの場合、子孫ノードを含む)を監視するためにtrueに設定し、新しいサブノードを追加または削除します.デフォルトはfalseです.
subtree
trueに設定して、ターゲットノードツリー全体のすべてのノードに監視範囲を拡張します.MutationObserverInitの他の値は、ターゲットノードだけでなく、このサブツリーの下にあるすべてのノードにも作用します.デフォルトはfalseです.
callbackの紹介
callbackは、指定されたノードまたはサブツリー、および構成項目がDomに変更されるたびに呼び出されるコールバック関数です.コールバック関数には、2つのパラメータがあります.1つは、変更がトリガーされたすべてのMutationRecordオブジェクトの配列を記述し、もう1つは、関数を呼び出すMutationObserverオブジェクトです.
参考記事:
https://developer.mozilla.org...
APIの適合性:
MutationObserver
背景の使用
ページまたは親DOMは、次のような統一コールバックを行うために、子ノードの変化をリスニングする必要があります.
ここではMDNの公式紹介を採用し,MutationObserverインタフェースはDOMツリーへの変更を監視する能力を提供する.DOM 3 Events仕様の一部である古いMutation Events機能の代替品として設計されています.
MutationObserverには、主に3つの方法が含まれています.具体的には、次の例を参照してください.
インスタンス&例
MutationObserver()でインスタンスを作成できます.次に使用例を示します.
//
const targetNode = document.getElementById('some-id');
// ( )
const config = {
attributes: true, //
childList: true, //
subtree: true //
};
//
const callback = function(mutationsList, observer) {
// Use traditional 'for loops' for IE 11
for(let mutation of mutationsList) {
if (mutation.type === 'childList') {
console.log('A child node has been added or removed.');
}
else if (mutation.type === 'attributes') {
console.log('The ' + mutation.attributeName + ' attribute was modified.');
}
}
};
//
const observer = new MutationObserver(callback);
//
observer.observe(targetNode, config);
// ,
observer.disconnect();
configの値の紹介
前述のconfigは、MutationObserverInit辞書で、MutationObserverの構成を説明しています.構成には、次のオプション属性があります(必須属性はありません).
ツールバーの
紹介する
attributeFilter
監視する特定の属性名の配列.この属性が含まれていない場合、すべての属性の変更によって変更通知がトリガーされます.デフォルトはありません.
attributeOldValue
ノードのプロパティ変更を監視すると、このプロパティをtrueに設定すると、変更されたプロパティの前の値が記録されます.デフォルトはありません.
attributes
trueに設定して、監視されている要素の属性値の変更を観察します.デフォルトはfalseです.
characterData
trueに設定して、指定したターゲットノードまたはサブノードツリーに含まれるノードの文字データの変化を監視します.デフォルトはありません.
characterDataOldValue
trueに設定して、監視ノードでテキストが変更されたときにノードテキストの前の値を記録します.デフォルトはありません.
childList
ターゲットノード(subtreeがtrueの場合、子孫ノードを含む)を監視するためにtrueに設定し、新しいサブノードを追加または削除します.デフォルトはfalseです.
subtree
trueに設定して、ターゲットノードツリー全体のすべてのノードに監視範囲を拡張します.MutationObserverInitの他の値は、ターゲットノードだけでなく、このサブツリーの下にあるすべてのノードにも作用します.デフォルトはfalseです.
callbackの紹介
callbackは、指定されたノードまたはサブツリー、および構成項目がDomに変更されるたびに呼び出されるコールバック関数です.コールバック関数には、2つのパラメータがあります.1つは、変更がトリガーされたすべてのMutationRecordオブジェクトの配列を記述し、もう1つは、関数を呼び出すMutationObserverオブジェクトです.
参考記事:
https://developer.mozilla.org...
APIの適合性: