Как вообще сравнить два DOM или DOM-узла?

Я использую var win1 = open.window(...); var win2 = open.window(...);, чтобы открыть 2 вкладки/окна в Firefox - теперь я хочу сравнить две модели DOM (объектные модели документов) на предмет сходства. Итак, у меня есть два DOM, содержащие очень похожую страницу. Страницы имеют один и тот же HTML, но исполняют разные файлы JavaScript.

В общем, я проверяю, совпадают ли HTML и CSS:

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

Но сравнение всех узлов DOM, кажется, дает плохие результаты:

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

bodyNodes1[123].innerHTML не обязательно похоже bodyNodes2[123].innerHTML

Какие методы можно использовать для сравнения узлов DOM? Существуют ли какие-либо фреймворки/библиотеки/скрипты для проверки страниц на сходство?

Я очень благодарен за любые подсказки. :-)


person Claudio    schedule 14.12.2010    source источник


Ответы (1)


Я думаю, что вы ищете:

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

Надеюсь это поможет.

person AgentRev    schedule 15.02.2011
comment
isSameNode устарел. См. developer.mozilla.org/en-US/docs/DOM/Node. .isSameNode, а также заголовок stackoverflow.com/questions/3649321/ - person Georgii Ivankin; 07.11.2012