DOM4 compareDocumentPosition跨瀏覽器比較文檔位置
我想實現compareDocumentPosition。 Resig已經做出了great start at doing just this。我已經採取了他的代碼,並neatened它
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;
}
這適用於Element
但並不爲Text
或DocumentFragment
。這是因爲IE8不會在這些節點上提供.sourceIndex
。 (它不給.contains
要麼但我已經固定了這個問題)
如何有效地寫+=4
和+=2
位對應於DOCUMENT_POSITION_FOLLOWING和DOCUMENT_POSITION_PRECEDING。
對於額外的參考這兩個由該DOM4定義爲
如果A和B在相同的樹和A按照樹順序接在B之前的對象的是一種對象B前述樹順序定義。
如果A和B位於同一棵樹中,並且A以樹的順序位於B之後,則對象A位於對象B之後。
樹的順序是先序,深度優先遍歷。
大多數現代瀏覽器都實現這個功能(包括IE9)。所以你只需要一些能在IE8中工作的東西(我不在乎IE6/7,但是如果它真的很棒!)
哦Raynos,你真棒。謝謝你回答我的問題 – Raynos
你還好嗎....? –
@TimDown我睡不夠。 – Raynos