J'ai besoin d'un mécanisme efficace pour la détection des changements pour les DOM. De préférence, la croix-navigateur, mais si il y a moyens efficaces qui sont pas de la croix-navigateur, je peux mettre en œuvre ces avec un fail-safe de la croix-navigateur méthode.
En particulier, j'ai besoin de détecter les changements qui pourraient affecter le texte sur une page, de sorte que toute nouvelle, supprimer ou modifier les éléments ou les modifications de texte interne (innerHTML) serait nécessaire.
Je n'ai pas de contrôle sur les modifications apportées (ils ont peut-être dû à la 3e partie javascript comprend, etc), donc il ne peut pas être abordé sous cet angle - j'ai besoin de "surveiller" les changements en quelque sorte.
Actuellement j'ai mis en place un "quick n'dirty" méthode qui vérifie body.innerHTML.length
, à des intervalles. Ce ne sera pas bien sûr de détecter les changements qui résultent de la même longueur étant retourné, mais dans ce cas est "assez bon" - les chances que cela arrive sont extrêmement minces, et dans ce projet, à défaut de détecter un changement de ne pas entraîner la perte de données.
Le problème avec body.innerHTML.length
, c'est que c'est cher. Il peut prendre entre 1 et 5 millisecondes sur un rapide navigateur, et cela peut la tourbière de choses vers le bas beaucoup de choses, je suis aussi un grand-ish nombre des iframes et il ajoute tout. Je suis sûr que la cherté de la faire, c'est parce que le innerHTML de texte n'est pas stocké de manière statique par les navigateurs, et doit être calculée à partir de la DOM chaque fois qu'il est lu.
Les types de réponses, je suis à la recherche sont pour rien dans le "précis" (par exemple de l'événement) à l' "assez bon" - peut-être quelque chose comme "quick n'dirty" comme le innerHTML.méthode de longueur, mais qui s'exécute plus rapidement.
EDIT: Je tiens également à souligner que, alors que ce serait "sympa" pour détecter la précision de l'élément qui a été modifié, il n'est pas une nécessité absolue - juste le fait qu'il n'y a eu aucun changement serait assez bon. J'espère que cela élargit les réponses. Je vais étudier la Mutation des Événements, mais j'ai encore besoin d'un secours pour IE soutien, de sorte que tout dément, créatif, à l'extérieur-de-la-place les idées seront les bienvenues.