From b0a352bfa76cbe1b65f8186d3cb90fe35a08866d Mon Sep 17 00:00:00 2001 From: Dave Methvin Date: Thu, 13 Sep 2012 18:47:07 -0400 Subject: [PATCH] Fix #12534. Don't die on browsers lacking getBoundingClientRect. --- src/offset.js | 4 ++-- test/unit/offset.js | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/offset.js b/src/offset.js index db161f3ee..14cd1a629 100644 --- a/src/offset.js +++ b/src/offset.js @@ -23,8 +23,8 @@ jQuery.fn.offset = function( options ) { docElem = doc.documentElement; - // Make sure we're not dealing with a disconnected DOM node - if ( !jQuery.contains( docElem, elem ) ) { + // 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 }; } diff --git a/test/unit/offset.js b/test/unit/offset.js index d18bc4bb8..ab44416d0 100644 --- a/test/unit/offset.js +++ b/test/unit/offset.js @@ -15,6 +15,15 @@ test("empty set", function() { strictEqual( jQuery().position(), undefined, "position() returns undefined for empty set (#11962)" ); }); +test("object without getBoundingClientRect", function() { + expect(2); + + // Simulates a browser without gBCR on elements, we just want to return 0,0 + var result = jQuery({ ownerDocument: document }).offset(); + equal( result.top, 0, "Check top" ); + equal( result.left, 0, "Check left" ); +}); + test("disconnected node", function() { expect(2);