Ticket #11473: getOffsetParent_viewportOffset_fix.diff
| File getOffsetParent_viewportOffset_fix.diff, 1.7 kB (added by jdalton, 4 months ago) |
|---|
-
dom.js
old new 577 577 }, 578 578 579 579 getOffsetParent: function(element) { 580 if (element.offsetParent) return $(element.offsetParent); 581 if (element == document.body) return $(element); 582 583 while ((element = element.parentNode) && element != document.body) 580 element = $(element); 581 var op = element.offsetParent, body = document.body, docEl = document.documentElement; 582 583 /* IE with strict doctype may try to return documentElement as offsetParent 584 on relatively positioned elements, we will return body instead */ 585 if (op && op !== docEl) return $(op); 586 if (op === docEl || element === docEl || element === body) return $(body); 587 588 while ((element = element.parentNode) && element !== body) 584 589 if (Element.getStyle(element, 'position') != 'static') 585 590 return $(element); 586 591 587 return $( document.body);592 return $(body); 588 593 }, 589 594 590 595 viewportOffset: function(forElement) { 591 var valueT = 0, valueL = 0;596 forElement = $(forElement); 592 597 593 var element = forElement ;598 var element = forElement, valueT = 0, valueL = 0; 594 599 do { 595 600 valueT += element.offsetTop || 0; 596 601 valueL += element.offsetLeft || 0; 602 } while ((element = element.getOffsetParent()) != document.body); 597 603 598 // Safari fix599 if (element.offsetParent == document.body &&600 Element.getStyle(element, 'position') == 'absolute') break;601 602 } while (element = element.offsetParent);603 604 604 element = forElement; 605 605 do { 606 606 if (!Prototype.Browser.Opera || element.tagName.toUpperCase() == 'BODY') {