बल्कि मुश्किल है, मैं व्यक्तिगत रूप से प्रत्येक पेड़ जब तक मैं एक आम ansester पाया itterate होगा, तो जाँच जो माता-पिता नोड (या वास्तविक नोड है कि कम होने पर) पहले firstChild के साथ शुरू आता है और भाई बहन के माध्यम से काम, कुछ की तरह:
function OrderCheck(node1, node2){
var ar1 = [null, node1];
var ar2 = [null, node2];
for(var i = 1; ar1[i] != null; i++)
ar1[i+1]=ar1[i].parentNode;
for(var i = 1; ar2[i] != null; i++)
ar2[i+1]=ar2[i].parentNode;
ar1.reverse(); ar2.reverse(); // easier to work with.
i = 0;
while(ar1[i] === ar2[i]){
if(ar1[i] === null)
return 0;
else
i++
}
if(ar1[i] === null)
return 2;
if(ar2[i] === null)
return 1;
if(i != 0){
var n = ar1[i-1].firstChild;
do{
if(n === ar1[i])
return 1;
if(n === ar2[i])
return 2;
}while(n = n.nextSibling);
}
return -1;// Shouldn't happen.
}
var order = OrderCheck(document.body, document.body.previousSibling);
if(order == 1){
// element 1 first
}else if(order == 2){
// element 2 first
}else{
// there was an error.
}
मैं सिर्फ दो संभावित समस्याओं को ठीक करने की कोशिश में इस कोड को संपादित किया, मैं इस नए संपादित लेकिन परीक्षण नहीं किया है, इसलिए यदि कुछ टूट जाता है मैं फिर से कोशिश करना होगा । ("बग भी नहीं चलाता" स्टाइल बग को ठीक करने के लिए फिर से संपादित किया गया)।
यह ध्यान दिया जाना चाहिए कि रेसिग की विधि केवल टेक्स्ट नोड्स पर नहीं, तत्व नोड्स पर काम करेगी। – Michael
हाँ। टेक्स्ट नोड्स में .sourceIndex नहीं है और उनके पास नहीं है .contains()। – Michael
&& उन सभी मामलों में कुछ भी नहीं करता है, क्योंकि आरएचएस हमेशा सत्य होता है। – gsnedders