Commit d8b3bd70 authored by John Resig's avatar John Resig

Switch to using createRange for element comparision instead of Array indexOf...

Switch to using createRange for element comparision instead of Array indexOf checks - thanks for the tip, Ioseb.
parent 4b7e1c90
...@@ -692,20 +692,22 @@ if ( document.documentElement.compareDocumentPosition ) { ...@@ -692,20 +692,22 @@ if ( document.documentElement.compareDocumentPosition ) {
} }
return ret; return ret;
}; };
} else if ( Array.prototype.indexOf ) { } else if ( "sourceIndex" in document.documentElement ) {
var indexOf = Array.prototype.indexOf,
allSort = document.getElementsByTagName("*");
sortOrder = function( a, b ) { sortOrder = function( a, b ) {
var ret = indexOf.call( allSort, a ) - indexOf.call( allSort, b ); var ret = a.sourceIndex - b.sourceIndex;
if ( ret === 0 ) { if ( ret === 0 ) {
hasDuplicate = true; hasDuplicate = true;
} }
return ret; return ret;
}; };
} else if ( "sourceIndex" in document.documentElement ) { } else if ( document.createRange ) {
sortOrder = function( a, b ) { sortOrder = function( a, b ) {
var ret = a.sourceIndex - b.sourceIndex; var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
aRange.selectNode(a);
aRange.collapse(true);
bRange.selectNode(b);
bRange.collapse(true);
var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
if ( ret === 0 ) { if ( ret === 0 ) {
hasDuplicate = true; hasDuplicate = true;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment