DOM4 compareDocumentPositiontrình duyệt chéo so sánh vị trí tài liệu
Tôi muốn triển khai compareDocumentPosition. Resig đã thực hiện great start at doing just this. Tôi đã lấy code của mình và neatened nó lên
function compareDocumentPosition(other) {
var ret = 0;
if (this.contains) {
if (this !== other && this.contains(other)) {
ret += 16;
}
if (this !== other && other.contains(this)) {
ret += 8;
}
if (this.sourceIndex >= 0 && other.sourceIndex >= 0) {
if (this.sourceIndex < other.sourceIndex) {
ret += 4;
}
if (this.sourceIndex > other.sourceIndex) {
ret += 2;
}
} else {
ret += 1;
}
}
return ret;
}
này làm việc cho Element
nhưng không cho Text
hoặc DocumentFragment
. Điều này là do IE8 không cung cấp cho .sourceIndex
trên các nút đó. (Nó không cung cấp cho .contains
một trong hai nhưng tôi đã cố định vấn đề đó đã được)
Làm thế nào để có hiệu quả viết +=4
và +=2
chút tương ứng với DOCUMENT_POSITION_FOLLOWING và DOCUMENT_POSITION_PRECEDING.
Đối với thêm tài liệu tham khảo hai được xác định bằng cây đặt hàng mà DOM4 định nghĩa như
Một đối tượng A được trước một đối tượng B nếu A và B trong cùng một cây và A đứng trước B để cây .
Một đối tượng A theo một đối tượng B nếu A và B nằm trong cùng một cây và A đến sau B theo thứ tự cây.
Thứ tự cây được đặt hàng trước, trải qua chiều sâu đầu tiên.
Hầu hết các trình duyệt hiện đại đều thực hiện điều này (bao gồm IE9). Vì vậy, bạn chỉ cần một cái gì đó mà làm việc trong IE8 (Tôi không quan tâm về IE6/7, nhưng nếu nó hoạt động tuyệt vời!)
Oh Raynos, bạn tuyệt vời . Cảm ơn bạn đã trả lời câu hỏi của tôi – Raynos
Bạn có ổn không ....? –
@TimDown Tôi không ngủ đủ. – Raynos