Ticket #6921: abs_wip.patch
| File abs_wip.patch, 2.0 kB (added by haysmark, 6 months ago) |
|---|
-
_base/html.js
924 924 925 925 // targetBoxType == "border-box" 926 926 var db = d.body(); 927 if(d.isIE || (d.isFF >= 3)){927 if(d.isIE){ 928 928 var client = node.getBoundingClientRect(); 929 929 var offset = (d.isIE) ? d._getIeDocumentElementOffset() : { x: 0, y: 0}; 930 930 ret.x = client.left - offset.x; 931 931 ret.y = client.top - offset.y; 932 }else if(ownerDocument["getBoxObjectFor"]){933 // mozilla934 var bo = ownerDocument.getBoxObjectFor(node),935 b = d._getBorderExtents(node);936 ret.x = bo.x - b.l - _sumAncestorProperties(node, "scrollLeft");937 ret.y = bo.y - b.t - _sumAncestorProperties(node, "scrollTop");938 932 }else{ 939 933 if(node["offsetParent"]){ 940 934 var endNode; … … 951 945 }else{ 952 946 endNode = db.parentNode; 953 947 } 954 if(node.parentNode != db){ 955 var nd = node; 956 if(d.isOpera){ nd = db; } 957 ret.x -= _sumAncestorProperties(nd, "scrollLeft"); 958 ret.y -= _sumAncestorProperties(nd, "scrollTop"); 959 } 948 // Opera seems to be double counting for some elements 949 ret.x -= _sumAncestorProperties(node, "scrollLeft"); 950 ret.y -= _sumAncestorProperties(node, "scrollTop"); 960 951 var curnode = node; 961 952 do{ 962 953 var n = curnode.offsetLeft; … … 968 959 } 969 960 var t = curnode.offsetTop; 970 961 ret.y += isNaN(t) ? 0 : t; 971 if( d.isSafari &&curnode != node){962 if(curnode != node){ 972 963 var cs = gcs(curnode); 973 ret.x += px(curnode, cs.borderLeftWidth); 974 ret.y += px(curnode, cs.borderTopWidth); 964 if(d.isSafari){ 965 ret.x += px(curnode, cs.borderLeftWidth); 966 ret.y += px(curnode, cs.borderTopWidth); 967 }else if(d.isMozilla && curnode != db){ 968 ret.x += px(curnode, cs.paddingLeft)+px(curnode, cs.marginLeft); 969 ret.y += px(curnode, cs.paddingTop)+px(curnode, cs.marginTop); 970 } 975 971 } 976 972 curnode = curnode.offsetParent; 977 973 }while((curnode != endNode) && curnode);