compareDocumentPosition confuses knockout 2.2.1 - remove it and let knockout check if a node is inside a DOM itself by iteration of parents envjs
authorJaroslav Tulach <jtulach@netbeans.org>
Wed, 04 Jun 2014 16:07:43 +0200
branchenvjs
changeset 694e4dad7683970
parent 693 e2eede6131fd
child 695 be623953a38b
compareDocumentPosition confuses knockout 2.2.1 - remove it and let knockout check if a node is inside a DOM itself by iteration of parents
boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js
     1.1 --- a/boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js	Wed Jun 04 15:18:05 2014 +0200
     1.2 +++ b/boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js	Wed Jun 04 16:07:43 2014 +0200
     1.3 @@ -2846,78 +2846,6 @@
     1.4          }
     1.5          return !!node;
     1.6      },
     1.7 -    compareDocumentPosition : function(b){
     1.8 -        //console.log("comparing document position %s %s", this, b);
     1.9 -        var i,
    1.10 -            length,
    1.11 -            a = this,
    1.12 -            parent,
    1.13 -            aparents,
    1.14 -            bparents;
    1.15 -        //handle a couple simpler case first
    1.16 -        if(a === b) {
    1.17 -            return Node.DOCUMENT_POSITION_EQUAL;
    1.18 -        }
    1.19 -        if(a.ownerDocument !== b.ownerDocument) {
    1.20 -            return Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|
    1.21 -               Node.DOCUMENT_POSITION_FOLLOWING|
    1.22 -               Node.DOCUMENT_POSITION_DISCONNECTED;
    1.23 -        }
    1.24 -        if(a.parentNode === b.parentNode){
    1.25 -            length = a.parentNode.childNodes.length;
    1.26 -            for(i=0;i<length;i++){
    1.27 -                if(a.parentNode.childNodes[i] === a){
    1.28 -                    return Node.DOCUMENT_POSITION_FOLLOWING;
    1.29 -                }else if(a.parentNode.childNodes[i] === b){
    1.30 -                    return Node.DOCUMENT_POSITION_PRECEDING;
    1.31 -                }
    1.32 -            }
    1.33 -        }
    1.34 -
    1.35 -        if(a.contains(b)) {
    1.36 -            return Node.DOCUMENT_POSITION_CONTAINED_BY|
    1.37 -                   Node.DOCUMENT_POSITION_FOLLOWING;
    1.38 -        }
    1.39 -        if(b.contains(a)) {
    1.40 -            return Node.DOCUMENT_POSITION_CONTAINS|
    1.41 -                   Node.DOCUMENT_POSITION_PRECEDING;
    1.42 -        }
    1.43 -        aparents = [];
    1.44 -        parent = a.parentNode;
    1.45 -        while(parent){
    1.46 -            aparents[aparents.length] = parent;
    1.47 -            parent = parent.parentNode;
    1.48 -        }
    1.49 -
    1.50 -        bparents = [];
    1.51 -        parent = b.parentNode;
    1.52 -        while(parent){
    1.53 -            i = aparents.indexOf(parent);
    1.54 -            if(i < 0){
    1.55 -                bparents[bparents.length] = parent;
    1.56 -                parent = parent.parentNode;
    1.57 -            }else{
    1.58 -                //i cant be 0 since we already checked for equal parentNode
    1.59 -                if(bparents.length > aparents.length){
    1.60 -                    return Node.DOCUMENT_POSITION_FOLLOWING;
    1.61 -                }else if(bparents.length < aparents.length){
    1.62 -                    return Node.DOCUMENT_POSITION_PRECEDING;
    1.63 -                }else{
    1.64 -                    //common ancestor diverge point
    1.65 -                    if (i === 0) {
    1.66 -                        return Node.DOCUMENT_POSITION_FOLLOWING;
    1.67 -                    } else {
    1.68 -                        parent = aparents[i-1];
    1.69 -                    }
    1.70 -                    return parent.compareDocumentPosition(bparents.pop());
    1.71 -                }
    1.72 -            }
    1.73 -        }
    1.74 -
    1.75 -        return Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|
    1.76 -               Node.DOCUMENT_POSITION_DISCONNECTED;
    1.77 -
    1.78 -    },
    1.79      toString : function() {
    1.80          return '[object Node]';
    1.81      }