8
votes

Comment identifier quand le DOM a été changé?

Y a-t-il un moyen simple de savoir quand le DOM a été changé?

Y a-t-il un événement / une fonction JavaScript / JQuery intégré pour cela?


0 commentaires

3 Réponses :


4
votes

Vous pouvez joindre à de nombreux événements DOM en fonction du type de changement que vous souhaitez écouter. Voici une page avec tous les événements de changement de DOM:

https://developer.mozilla.org/fr/fr / DOM_EVENT

L'événement Generic, Catch-Tous Dom Change Change est DomsubTréMified "/ code>. Par exemple: xxx


0 commentaires

2
votes

Il n'y a pas d'événement intégré pour cela qui est largement pris en charge, malheureusement. Vous pouvez utiliser un plug-in jQuery appelé LiveQuery cependant.


5 commentaires

Ils sont super mais ne sont pas correctement pris en charge. Je préfère me sauver le problème et utiliser un plugin testé.


L'utilisation de bibliothèques inhibe la demande de développement des normes ainsi que de tirer le flux des utilisateurs de par exemple. Internet Explorer.


@Delan Celles-ci sont une hypothèse très erronée - Les bibliothèques JavaScript abstrait éloignent les différences dans la mise en œuvre de la DOM du navigateur et aident à créer une base de référence avec laquelle il est possible de se développer, au lieu de passer du temps à repasser des problèmes de compatibilité croisée. Briser votre site sur IE n'empêchera pas que les gens s'éloignent d'IE, juste des gens de visiter votre site et ne vont aider personne.


@Delan: Je vois ce que tu as fait là-bas. Le fait est cependant en ignorant IE et espérant que cela disparaisse ne fait que n'allant que les 80% du monde qui utilise encore, c'est-à-dire. Si un site a l'air et fonctionne comme la merde dans le navigateur de quelqu'un, leur première pensée ne sera pas «c'est-à-dire cassé» - ce sera «ce site est cassé». Peu importe ce que disent les weenies FF, c'est-à-dire qu'il est toujours important et le site devrait au moins travailler dedans. Si vous voulez dire autrement, franchement, vous n'avez probablement pas eu à concevoir un véritable site Web pour un véritable client - cause dans presque tous les cas, les personnes qui paient pour le site l'affichaient dans IE.


Un diaporama, sûr. Un diaporama, cependant, ne fait pas une "application Web moderne". Pensez hotmail ou Google Docs, ou Sketchpad . Vous pouvez également coder toutes les choses requises pour quelque chose comme ça à partir de zéro, ou vous pouvez utiliser les fruits du travail acharné de quelqu'un d'autre (c.-à-d. Une bibliothèque) et être à moitié terminée avant même de commencer. Cela sans même couvrir l'abstraction du navigateur mentionné par Yi ci-dessus.



6
votes

Si vous devez détecter les modifications, vous pouvez vérifier les événements de mutation DOM. DOM Events Wikipedia Page les énumère tous. Cependant, vous devez savoir qu'ils ne sont pas pris en charge dans Internet Explorer et ne peuvent pas tirer trop souvent dans les navigateurs qui les soutiennent. Une approche de force brute est d'utiliser Settimeout et de vérifier les modifications par vous-même.

Mon expérience montre que le besoin de notifications de changement DOM peut être évitée. Pourriez-vous donner plus de détails sur vos besoins exacts?


2 commentaires

Je veux laisser l'utilisateur à modifier la couleur de tout élément de la page en cliquant sur l'élément. Lorsque le point de clic est connu, je souhaite numériser le DOM pour tous les éléments qui réside au point de clic et laissez l'utilisateur de décider quel élément il souhaite changer la couleur. Étant donné que des éléments peuvent être ajoutés et supprimés sur cette page, on dirait que je dois numériser le DOM à chaque clic. Je pensais cacher tous les éléments Dom dans une variable et modifier cette variable lorsque le DOM change.


@ Mishamoroshko Afaik Vous pouvez utiliser Event.Target pour savoir quel nœud a été cliqué. Vous pouvez donc attacher l'événement au de la documentation elle-même.