2010-12-14 31 views
6

Tôi đang sử dụng var win1 = open.window(...); var win2 = open.window(...); để mở 2 tab/cửa sổ trong Firefox - bây giờ tôi muốn so sánh hai DOM (mô hình đối tượng tài liệu) cho tương tự. Vì vậy, tôi có hai DOM có chứa một trang rất giống nhau. Các trang có cùng HTML nhưng thực thi các tệp JavaScript khác nhau.Cách so sánh hai DOM hoặc nút DOM nói chung?

Nói chung tôi kiểm tra xem HTML và CSS là như nhau:

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

Nhưng so sánh tất cả các nút DOM dường như để cho kết quả xấu:

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

bodyNodes1[123].innerHTML là không cần thiết tương tự bodyNodes2[123].innerHTML

Phương pháp nào có thể được sử dụng để so sánh các nút DOM? Có bất kỳ Khung/Thư viện/Tập lệnh nào tồn tại để kiểm tra các trang tương tự không?

Tôi rất biết ơn vì bất kỳ gợi ý nào. :-)

Trả lời

7

Tôi nghĩ rằng những gì bạn đang tìm kiếm là một trong hai:

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

Hope this helps.

+3

'isSameNode' không được dùng nữa. Xem https://developer.mozilla.org/en-US/docs/DOM/Node.isSameNode và cũng có thể http://stackoverflow.com/questions/3649321/is-there-a-way-to-check-if- hai-dom-elements-are-equal –

+1

isEqualNode không hoạt động trên IE mặc dù. Tôi đang tìm cách. –