Introduction à MutationObserver
MutationObserver offre aux développeurs la possibilité de répondre de manière appropriée lorsque l'arborescence DOM dans une certaine plage change. Cette API est conçue pour remplacer l'événement Mutation introduit dans la spécification d'événement DOM3.
Mutation Observer est une interface permettant de surveiller les modifications du DOM. Mutation Observer sera averti lorsque des modifications se produiront dans l'arborescence des objets DOM.
Mutation Observer possède les fonctionnalités suivantes :
•Il attend que toutes les tâches de script soient terminées avant de s'exécuter, c'est-à-dire de manière asynchrone
•Il encapsule les enregistrements de modifications DOM dans un tableau pour les traiter au lieu de traiter les modifications DOM une par une.
•Il peut observer tous les changements qui se produisent dans les nœuds DOM, et il peut également observer un certain type de changements
Informations MDN : MutationObserver
MutationObserver est un constructeur, donc lors de sa création, vous devez transmettre new MutationObserver ;
Lors de l'instanciation de MutationObserver, une fonction de rappel est requise. La fonction de rappel sera appelée lorsque le nœud DOM spécifié (nœud cible) change
.Lorsqu'il est appelé, l'objet observateur sera passé à la fonction avec deux paramètres :
1 : Le premier paramètre est un tableau contenant plusieurs objets MutationRecord
2 : Le deuxième paramètre est l'objet observateur lui-même
.Par exemple :
méthodes d'observateur
L'observateur d'instance a trois méthodes : 1 : observer ; 2 : déconnecter ; 3 : takeRecords ; méthode d'observationMéthode Observer : enregistrez le nœud cible qui doit être observé auprès de l'objet observateur actuel et recevez une notification lorsque le DOM change dans le nœud cible (vous pouvez également observer ses nœuds descendants en même temps
) ;Cette méthode nécessite deux paramètres, le premier est le nœud cible et le deuxième paramètre est le type qui doit être surveillé pour les modifications, qui est un objet json. L'exemple est le suivant :
La méthode de déconnexion cessera d'observer les propriétés et les changements de nœud du nœud cible jusqu'à ce que la méthode d'observation soit à nouveau appelée
; takeRecordsEffacer la file d'attente d'enregistrement de l'objet observateur et renvoyer un tableau contenant l'objet événement Mutation ;
MutationObserver est parfait pour implémenter la restauration et l'annulation d'un éditeur, car toutes les modifications qui se produisent dans le nœud spécifié seront enregistrées à chaque fois. Si vous utilisez l'implémentation traditionnelle de keydown ou de keyup, il y aura certains inconvénients, tels que :
1 : Perte de défilement, entraînant une position de défilement inexacte2 : Perte de focus ;
....
Il a fallu quelques heures pour écrire un plug-in de gestion MutationJS pour l'annulation et le rétablissement (gestion des annulations et des restaurations) implémenté via MutationObserver, qui peut être utilisé comme introduction distincte du plug-in : (http://files.cnblogs.com/files/diligenceday/MutationJS.js
) :
MutationJS 如何使用
那這個MutationJS怎麼用呢?
L'instance de mutation mu a plusieurs méthodes :
1 : restauration de l'opération mu.undo()
2 : mu.redo() Annuler la restauration
3 : Que mu.canUndo() puisse fonctionner en retour, la valeur de retour est vraie ou fausse
;4 : Que mu.canRedo() puisse annuler la restauration, la valeur de retour est vraie ou fausse
;5 : mu.reset() efface toutes les listes d'annulation et libère de l'espace
6 : mu.without() passe un paramètre de fonction, et toutes les opérations DOM à l'intérieur de la fonction ne seront pas enregistrées par mu
;MutationJS implémente un simple undoManager pour référence, qui fonctionne parfaitement sur Firefox, Chrome, Google Chrome et IE11 :
MutationObserver est destiné au remplacement Supprimez la série originale d'événements de mutation et le navigateur surveillera l'ajout, la suppression, le remplacement, etc. de tous les éléments sous l'élément spécifié ;
Capture d'écran de DEMO sous IE :
Compatibilité navigateur de MutatoinObserver :
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opéra | Safari |
---|---|---|---|---|---|
Support de base |
18
26 |
14(14) | 11 | 15 | 6.0WebKit |