60 votes

Pourquoi l'événement DOMSubtreeModified est-il déprécié dans le DOM niveau 3 ?

Pourquoi l'événement DOMSubtreeModified déprécié et qu'est-ce qu'on est censé utiliser à la place ?

53voto

Domenic Points 40761

Si vous faites défiler un peu vers le bas vous voyez :

Attention ! Le site MutationEvent a été introduite dans le DOM Level 2 Events, mais n'a pas encore été complètement implémentée de manière interopérable. dans tous les agents utilisateurs. En outre, des critiques ont été émises selon lesquelles l'interface l'interface, telle qu'elle est conçue, présente un défi en termes de performance et de mise en œuvre. de performance et d'implémentation. Une nouvelle spécification est en cours de développement dans le but de d'aborder les cas d'utilisation que les événements de mutation résolvent, mais d'une manière plus performante. plus performante. Ainsi, cette spécification décrit les événements de mutation à des fins de référence et pour l'exhaustivité du comportement hérité, mais rend obsolète l'utilisation de la MutationEvent et l'interface MutationNameEvent interface.

L'API de remplacement est observateurs de mutations qui sont entièrement spécifiés dans les DOM Niveau de vie qui supplante toutes les sottises du niveau X de DOM.

4 votes

@ TJ - no down. Celui du dessus est DOMNodeRemovedFromDocument . :-)

3 votes

Le remplacement se fera dans le DOM Level 4 dvcs.w3.org/hg/domcore/raw-file/tip/ et il semble qu'il y ait des progrès dans Chromium bugs.webkit.org/show_bug.cgi?id=73851

1 votes

Un excellent hack pour remplacer le MutationEvent L'interface est animationStart et quelques CSS .

27voto

ralfthewise Points 148

Je pense que le remplacement se fera par des observateurs de mutations : https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

var whatToObserve = {childList: true, attributes: true, subtree: true, attributeOldValue: true, attributeFilter: ['class', 'style']};
var mutationObserver = new MutationObserver(function(mutationRecords) {
  $.each(mutationRecords, function(index, mutationRecord) {
    if (mutationRecord.type === 'childList') {
      if (mutationRecord.addedNodes.length > 0) {
        //DOM node added, do something
      }
      else if (mutationRecord.removedNodes.length > 0) {
        //DOM node removed, do something
      }
    }
    else if (mutationRecord.type === 'attributes') {
      if (mutationRecord.attributeName === 'class') {
        //class changed, do something
      }
    }
  });
});
mutationObserver.observe(document.body, whatToObserve);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X