aboutsummaryrefslogtreecommitdiffstats
path: root/src/offset.js
diff options
context:
space:
mode:
authorDave Methvin <dave.methvin@gmail.com>2012-09-14 10:14:40 -0400
committerDave Methvin <dave.methvin@gmail.com>2012-09-14 10:15:10 -0400
commit560c178c82da95b2f88ae518552463d87fe5adbf (patch)
tree6d85815f89acb5d3d6ad4a3f1a126cfb91ff5893 /src/offset.js
parentb0a352bfa76cbe1b65f8186d3cb90fe35a08866d (diff)
downloadjquery-560c178c82da95b2f88ae518552463d87fe5adbf.tar.gz
jquery-560c178c82da95b2f88ae518552463d87fe5adbf.zip
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.
Diffstat (limited to 'src/offset.js')
-rw-r--r--src/offset.js23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/offset.js b/src/offset.js
index 14cd1a629..381a42da2 100644
--- a/src/offset.js
+++ b/src/offset.js
@@ -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 = {