2010-12-14 10 views
6

Estoy usando var win1 = open.window(...); var win2 = open.window(...); para abrir 2 pestañas/ventanas en Firefox - ahora quiero comparar los dos DOM (modelos de objetos de documento) por similitud. Así que tengo dos DOM que contienen una página muy similar. Las páginas tienen el mismo HTML pero ejecutaron diferentes archivos JavaScript.¿Cómo se comparan dos DOM o DOM en general?

En general puedo comprobar si HTML y CSS es el mismo:

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) { ... } 

Pero la comparación de todos los nodos DOM parece dar malos resultados:

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

bodyNodes1[123].innerHTML no es neccessary similares bodyNodes2[123].innerHTML

¿Qué métodos se pueden usar para comparar los nodos DOM? ¿Existe algún Framework/Libraries/Scripts para probar la similitud de las páginas?

Estoy muy agradecido por cualquier pista. :-)

Respuesta

7

Creo que lo que busca es o bien:

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

Espero que esto ayude.

+3

'isSameNode' está en desuso. Consulte https://developer.mozilla.org/en-US/docs/DOM/Node.isSameNode y también http://stackoverflow.com/questions/3649321/is-there-a-way-to-check-if- two-dom-elements-are-equal –

+1

isEqualNode no funciona en IE embargo. Estoy buscando un camino. –