public
Description: Prototype JavaScript framework
Homepage: http://prototypejs.org/
Clone URL: git://github.com/sstephenson/prototype.git
Consolidate document.body getOffsetParent checks into a private utility 
method.
Sun Jun 29 16:54:18 -0700 2008
commit  aa3345d7f7060ba88a6eaeca234657d58483e9d5
tree    6fdaf01b4aaf551f5d87497b668702da6bafe410
parent  d8d0dcb3d5a36bc33e7106340e9368b1b808f6ef
...
 
 
1
2
3
...
1
2
3
4
5
0
@@ -1,3 +1,5 @@
0
+* Consolidate document.body getOffsetParent checks into a private utility method. [staaky, jddalton]
0
+
0
 * Fix issues with Element#cumulativeScrollOffset and Opera <9.5. [staaky, jddalton]
0
 
0
 * Fix issues with Element#clonePosition and element border/padding. [staaky, jddalton]
...
442
443
444
445
 
446
447
448
...
622
623
624
 
 
 
 
 
 
 
 
 
625
626
627
...
664
665
666
667
668
669
670
671
672
673
674
...
686
687
688
689
 
690
691
692
...
697
698
699
700
 
701
702
703
...
713
714
715
716
 
717
718
719
 
720
721
722
...
442
443
444
 
445
446
447
448
...
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
...
673
674
675
 
 
 
 
 
676
677
678
...
690
691
692
 
693
694
695
696
...
701
702
703
 
704
705
706
707
...
717
718
719
 
720
721
722
 
723
724
725
726
0
@@ -442,7 +442,7 @@ Element.Methods = {
0
   getDimensions: function(element) {
0
     element = $(element);
0
     var display = element.getStyle('display'),
0
- dimensions = { width: element.clientWidth, height: element.clientHeight };
0
+ dimensions = { width: element.offsetWidth, height: element.offsetHeight };
0
     
0
     // All width and height properties return 0 on elements with display:none,
0
     // so show the element temporarily
0
@@ -622,6 +622,15 @@ Object.extend(Element.Methods, (function() {
0
   function getStyleDiff(element, source, style) {
0
     return getNumericStyle(source, style) - getNumericStyle(element, style);
0
   }
0
+
0
+ function getOffsetParent(element) {
0
+ var op = Element.getOffsetParent(element);
0
+ if (op === document.body &&
0
+ (element.sourceIndex < 1 || !element.offsetParent)) {
0
+ return false;
0
+ }
0
+ return op;
0
+ }
0
 
0
   function cloneDimension(element, source, dimension) {
0
     var style = { }, properties;
0
@@ -664,11 +673,6 @@ Object.extend(Element.Methods, (function() {
0
         end = document.documentElement;
0
       }
0
       
0
-
0
- if (element === document.documentElement ||
0
- element === endElement || element === document)
0
- return Element._returnOffset(0, 0);
0
-
0
       if (Element.getStyle(element, 'position') !== 'fixed') {
0
         while ((element = element.parentNode) &&
0
          element.nodeType === 1 && element !== end) {
0
@@ -686,7 +690,7 @@ Object.extend(Element.Methods, (function() {
0
       do {
0
         valueT += element.offsetTop || 0;
0
         valueL += element.offsetLeft || 0;
0
- } while ((element = Element.getOffsetParent(element)) !== document.body);
0
+ } while (element = getOffsetParent(element));
0
 
0
       return Element._returnOffset(valueL, valueT);
0
     },
0
@@ -697,7 +701,7 @@ Object.extend(Element.Methods, (function() {
0
       do {
0
         valueT += element.offsetTop || 0;
0
         valueL += element.offsetLeft || 0;
0
- element = Element.getOffsetParent(element);
0
+ element = getOffsetParent(element);
0
       } while (element !== document.body &&
0
        Element.getStyle(element, 'position') === 'static');
0
 
0
@@ -713,10 +717,10 @@ Object.extend(Element.Methods, (function() {
0
         valueL += element.offsetLeft || 0;
0
 
0
         // Safari fix
0
- op = Element.getOffsetParent(element);
0
+ op = getOffsetParent(element);
0
         if (op === document.body && Element.getStyle(element,
0
          'position') === 'absolute') break;
0
- } while ((element = op) !== document.body);
0
+ } while (element = op);
0
 
0
       var scrollOffset = Element.cumulativeScrollOffset(forElement);
0
       valueT -= scrollOffset.top;

Comments

    No one has commented yet.