Skip to content
Permalink
Browse files

Fix #12536. Start at .offset() 0,0 if no getBoundingClientRect.

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.
  • Loading branch information...
dmethvin committed Sep 14, 2012
1 parent b0a352b commit 560c178c82da95b2f88ae518552463d87fe5adbf
Showing with 15 additions and 10 deletions.
  1. +14 −9 src/offset.js
  2. +1 −1 src/sizzle
@@ -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 = {
Submodule sizzle updated 2 files
+1 −1 speed/speed.css
+36 −7 speed/speed.js

1 comment on commit 560c178

@gibson042

This comment has been minimized.

Copy link
Member

commented on 560c178 Sep 14, 2012

👏

Please sign in to comment.
You can’t perform that action at this time.