2010-12-14 3 views
6

J'utilise var win1 = open.window(...); var win2 = open.window(...); pour ouvrir 2 onglets/fenêtres dans Firefox - maintenant je veux comparer les deux DOMs (modèles d'objets de document) pour la similarité. J'ai donc deux DOM contenant une page très similaire. Les pages ont le même HTML mais exécutent différents fichiers JavaScript.Comment comparer deux DOM ou DOM en général?

En général, je vérifie si HTML et CSS est le même:

var html1 = win1.document.body.innerHTML; 
var html2 = win2.document.body.innerHTML; 
if (html1 == html2) { ... } 
var css1 = win1.document.body.style.cssText 
var css2 = win2.document.body.style.cssText 
if (css1 == css2) { ... } 

Mais la comparaison de tous les nœuds DOM semble donner de mauvais résultats:

var bodyNodes1 = win1.document.body.getElementsByTagName('*'); 
var bodyNodes2 = win2.document.body.getElementsByTagName('*'); 

bodyNodes1[123].innerHTML n'est pas neccessary similaire bodyNodes2[123].innerHTML

Quelles méthodes peuvent être utilisées pour comparer les nœuds DOM? Existe-t-il des Framework/Libraries/Scripts pour tester la similarité des pages?

Je suis très reconnaissant pour tous les conseils. :-)

Répondre

7

Je pense que ce que vous cherchez est soit:

isEqualNode: http://help.dottoro.com/ljlpvjmd.php
isSameNode: http://help.dottoro.com/ljqqqfft.php

Hope this helps.

+3

'isSameNode' est obsolète. Voir https://developer.mozilla.org/en-US/docs/DOM/Node.isSameNode et aussi http://stackoverflow.com/questions/3649321/is-there-a-way-to-check-if- deux-dom-elements-are-equal –

+1

isEqualNode ne fonctionne pas sur IE cependant. Je cherche un moyen. –