Détecter des modifications d'un élément HTML avec JavaScript
Concept et utilisation
La fonction ElObserve()
permet de détecter les modifications d'un élément HTML.
Constructeur
ElObserve()
Retourne un objet détecteur de modifications d'un élément HTML.
- Syntaxe
new ElObserve(element, modifications);
- Paramètres
element
(Node)Le paramètre
element
de la fonctionElObserve()
définit l'élément HTML pour lequel observer des modifications.modifications
(Object)Le paramètre
modifications
de la fonctionElObserve()
définit les modifications à observer pour un élément HTML.
Si ce paramètre est omis, tous les types de modifications disponibles seront détectables.- Propriétés
childList
(Boolean)La propriété
childList
du paramètremodifications
définit avec une valeur booléenne la détection de toute modification d'un élément enfant de l'élément modifié.subtree
(Boolean)La propriété
subtree
du paramètremodifications
définit avec une valeur booléenne la détection de toute modification d'un élément descendant de l'élément modifié.attributes
(Boolean)La propriété
attributes
du paramètremodifications
définit avec une valeur booléenne la détection de toute modification d'un attribut de l'élément modifié.attributeOldValue
(Boolean)La propriété
attributeOldValue
du paramètremodifications
définit avec une valeur booléenne si la détection de toute modification d'un attribut de l'élément modifié doit renvoyer la valeur précédente de l'attribut.characterData
(Boolean)La propriété
characterData
du paramètremodifications
définit avec une valeur booléenne la détection de toute modification du contenu textuel de l'élément modifié.characterDataOldValue
(Boolean)La propriété
characterDataOldValue
du paramètremodifications
définit avec une valeur booléenne si la détection de toute modification de contenu textuel de l'élément modifié doit renvoyer le contenu précédent de l'élément.
- Méthodes de l'instance
detecteur.addListener()
La méthode
addListener()
de l'interfaceElObserve()
ajoute un écouteur au détecteur de modifications d'élément HTML.- Syntaxe
detecteur.addListener(ecouteur);
- Paramètre
ecouteur
(Function)Le paramètre
ecouteur
de la méthodeaddListener()
définit un écouteur de modifications d'élément HTML qui sera ajouté au détecteur.
Il s'agit d'une fonction de rappel, dont l'argument renvoie une liste des mutations qu'un élément a subi.
detecteur.removeListener()
La méthode
removeListener()
de l'interfaceElObserve()
supprime un écouteur du détecteur de modifications d'élément HTML.- Syntaxe
detecteur.removeListener(ecouteur);
- Paramètre
ecouteur
(Function)Le paramètre
ecouteur
de la méthoderemoveListener()
définit un écouteur de modifications d'élément HTML qui sera supprimé du détecteur.
detecteur.connect()
La méthode
connect()
de la fonctionElObserve()
active le détecteur de modifications d'un élément HTML.- Syntaxe
detecteur.connect();
- Paramètre
Aucun.
detecteur.disconnect()
La méthode
disconnect()
de la fonctionElObserve()
désactive le détecteur de modifications d'un élément HTML.
La pile d'écouteurs reste conservée.- Syntaxe
detecteur.disconnect();
- Paramètre
Aucun.
Exemple de détection de modification du document
var element = document.documentElement;
var modifications = {
attributes: true
};
var detecteur = new ElObserve(element, modifications);
var ecouteur = function(mutations) {
console.log(mutations);
detecteur.disconnect();
};
detecteur.addListener(ecouteur);
detecteur.connect();
element.setAttribute('test', 1);
element.setAttribute('test', 2);
// renvoie : [
// {
// addedNodes: NodeList []
// attributeName: "test"
// oldValue: null
// removedNodes: NodeList []
// target: html
// type: "attributes"
// }, {
// addedNodes: NodeList []
// attributeName: "test"
// oldValue: "1"
// removedNodes: NodeList []
// target: html
// type: "attributes"
// }
// ]
//
// La fonction étant asynchrone, les 2 modifications peuvent être listées dans un même retour.
Code source de la fonction
function ElObserve(e,o){
o=o||{childList:!0,subtree:!0,attributes:!0,attributeOldValue:!0,
characterData:!0,characterDataOldValue:!0};var t=this,a=[],m=null;
t.connect=function(){if(m===null){m=new MutationObserver(function(x){
for(var i=0,j=a.length;i<j;i++){a[i](x);}});m.observe(e,o);}};
t.disconnect=function(){if(m){m.disconnect();m=null;}};
t.addListener=function(f){a.push(f);};t.removeListener=function(){
var i=a.indexOf(f);if(i>-1){a.slice(i,1);}};}
Dernière mise à jour le .