2010-12-14 13 views
6

मैं फ़ायरफ़ॉक्स में 2 टैब/विंडोज खोलने के लिए var win1 = open.window(...); var win2 = open.window(...); का उपयोग कर रहा हूं - अब मैं समानता के लिए दो डीओएम (दस्तावेज़ ऑब्जेक्ट मॉडल) की तुलना करना चाहता हूं। तो मुझे दो डीओएम मिलते हैं जिनमें एक बहुत ही समान पृष्ठ होता है। पृष्ठों में एक ही HTML है लेकिन विभिन्न जावास्क्रिप्ट फ़ाइलों को निष्पादित किया गया है।सामान्य रूप से दो डीओएम या डोम नोड्स की तुलना कैसे करें?

सामान्य तौर पर मैं जाँच लें कि HTML और सीएसएस में एक ही है:

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

लेकिन सभी डोम नोड्स की तुलना बुरा परिणाम देने के लिए लगता है:

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

bodyNodes1[123].innerHTML आवश्यक समान नहीं है bodyNodes2[123].innerHTML

डोम नोड्स की तुलना करने के लिए कौन सी विधियों का उपयोग किया जा सकता है? समानता के लिए पृष्ठों का परीक्षण करने के लिए कोई फ्रेमवर्क/पुस्तकालय/स्क्रिप्ट मौजूद हैं?

मैं किसी भी संकेत के लिए बहुत आभारी हूं। :-)

उत्तर

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- दो-डोम-तत्व-बराबर –

+1

isEqualNode IE पर काम नहीं करता है। मैं एक रास्ता तलाश रहा हूँ। –

संबंधित मुद्दे