DOM4 compareDocumentPositionクロスブラウザ比較ドキュメントの位置
compareDocumentPositionを実装したいと思います。 Resigはgreat start at doing just thisを作りました。私は彼のコードを撮影し
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
のためにしませんが、それをneatenedました。 IE8は、それらのノード上.sourceIndex
を与えないためです。 (これは、どちらか.contains
を与えるものではありませんが、私はすでにその問題を修正しました)
どのように効率的にDOCUMENT_POSITION_FOLLOWINGとDOCUMENT_POSITION_PRECEDINGに対応+=4
と+=2
ビットを書きます。余分参考
これら二つをDOM4が
として定義ツリー順にAとBが同じツリー内であり、Aは、ツリー順にBの前に来る場合Aが物体Bに先行されるオブジェクトを定義しています。
オブジェクトAは、AとBが同じツリーにあり、Aがツリー順序でBの後に来る場合、オブジェクトBの後にあります。
ツリー順は前順、深さ優先探索です。
最近のほとんどのブラウザでは、この(IE9を含む)を実装します。だから、IE8で動作するものだけが必要です(私はIE6/7は気にしませんが、うまくいけば!)
ああレイノス。私の質問に答えるためのおかげ – Raynos
は大丈夫......?私がやりなさい –
@TimDownは十分に眠っていました。 – Raynos