]> source.dussan.org Git - jquery.git/commitdiff
Fix #12536. Start at .offset() 0,0 if no getBoundingClientRect.
authorDave Methvin <dave.methvin@gmail.com>
Fri, 14 Sep 2012 14:14:40 +0000 (10:14 -0400)
committerDave Methvin <dave.methvin@gmail.com>
Fri, 14 Sep 2012 14:15:10 +0000 (10:15 -0400)
This lets us still add the other offset components to the number so they're less wrong. Affects BlackBerry 5 and iOS 3, everyone else has gBCR.

src/offset.js
src/sizzle

index 14cd1a6292f6502d31a924178fa28f4842a7c2bd..381a42da2baa30a780d42ce4d82b5a61f6e446e5 100644 (file)
@@ -9,7 +9,8 @@ jQuery.fn.offset = function( options ) {
                        });
        }
 
-       var box, docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft, top, left,
+       var docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,
+               box = { top: 0, left: 0 },
                elem = this[ 0 ],
                doc = elem && elem.ownerDocument;
 
@@ -23,21 +24,25 @@ jQuery.fn.offset = function( options ) {
 
        docElem = doc.documentElement;
 
-       // Make sure we have the API and we're it's not a disconnected DOM node
-       if ( typeof elem.getBoundingClientRect === "undefined" || !jQuery.contains( docElem, elem ) ) {
-               return { top: 0, left: 0 };
+       // Make sure it's not a disconnected DOM node
+       if ( !jQuery.contains( docElem, elem ) ) {
+               return box;
        }
 
-       box = elem.getBoundingClientRect();
+       // If we don't have gBCR, just use 0,0 rather than error
+       // BlackBerry 5, iOS 3 (original iPhone)
+       if ( typeof elem.getBoundingClientRect !== "undefined" ) {
+               box = elem.getBoundingClientRect();
+       }
        win = getWindow( doc );
        clientTop  = docElem.clientTop  || body.clientTop  || 0;
        clientLeft = docElem.clientLeft || body.clientLeft || 0;
        scrollTop  = win.pageYOffset || docElem.scrollTop;
        scrollLeft = win.pageXOffset || docElem.scrollLeft;
-       top  = box.top  + scrollTop  - clientTop;
-       left = box.left + scrollLeft - clientLeft;
-
-       return { top: top, left: left };
+       return {
+               top: box.top  + scrollTop  - clientTop,
+               left: box.left + scrollLeft - clientLeft
+       };
 };
 
 jQuery.offset = {
index 9fb909e71fe0e152f80bf04198cc2b2098756c81..0a488ce5fa817bfa371658fc6cf0bd3214c5f3d5 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 9fb909e71fe0e152f80bf04198cc2b2098756c81
+Subproject commit 0a488ce5fa817bfa371658fc6cf0bd3214c5f3d5