2010-12-14 13 views
6

Sto usando var win1 = open.window(...); var win2 = open.window(...); per aprire 2 schede/finestre in Firefox - ora voglio confrontare i due DOM (modelli oggetto documento) per similarità. Quindi ho due DOM contenenti una pagina molto simile. Le pagine hanno lo stesso codice HTML ma eseguono diversi file JavaScript.Come confrontare due DOM o nodi DOM in generale?

In generale verifico se HTML e CSS è la stessa:

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

Ma confrontando tutti i nodi DOM sembra dare cattivi risultati:

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

bodyNodes1[123].innerHTML non è neccessary simile bodyNodes2[123].innerHTML

Quali metodi possono essere utilizzati per confrontare i nodi DOM? Esistono Framework/Librerie/Script per testare le pagine per similarità?

Sono molto grato per qualsiasi suggerimento. :-)

risposta

7

penso che quello che stai cercando è uno:

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

Spero che questo aiuti.

+3

'isSameNode' è deprecato. Vedi https://developer.mozilla.org/en-US/docs/DOM/Node.isSameNode e anche http://stackoverflow.com/questions/3649321/is-there-a-way-to-check-if- two-dom-elements-are-equal –

+1

isEqualNode non funziona su IE però. Sto cercando un modo. –