2010-12-14 92 views
6

我使用var win1 = open.window(...); var win2 = open.window(...);在Firefox中打開2個選項卡/窗口 - 現在我想比較兩個DOM(文檔對象模型)的相似性。 所以我有兩個包含非常類似頁面的DOM。這些頁面具有相同的HTML,但執行了不同的JavaScript文件。如何比較兩個DOM或DOM節點?

總的來說,我檢查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節點? 是否存在用於測試相似度頁面的任何框架/庫/腳本?

我非常感謝任何提示。 :-)

回答

7

我想你在找什麼可以是:

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

希望這有助於。

+3

'isSameNode'已棄用。請參閱https://developer.mozilla.org/en-US/docs/DOM/Node.isSameNode以及http://stackoverflow.com/questions/3649321/is-there-a-way-to-check-if-if-兩個dom元素是相等的 – 2012-11-07 12:23:04

+1

isEqualNode在IE上不起作用。我正在尋找一種方式。 – 2012-12-27 00:33:58