]> source.dussan.org Git - jquery.git/commitdiff
Fix #12534. Don't die on browsers lacking getBoundingClientRect.
authorDave Methvin <dave.methvin@gmail.com>
Thu, 13 Sep 2012 22:47:07 +0000 (18:47 -0400)
committerDave Methvin <dave.methvin@gmail.com>
Thu, 13 Sep 2012 22:47:07 +0000 (18:47 -0400)
src/offset.js
test/unit/offset.js

index db161f3ee3ab387b22a516a6e1bebfda00f5624a..14cd1a6292f6502d31a924178fa28f4842a7c2bd 100644 (file)
@@ -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 };
        }
 
index d18bc4bb89e412fc1dce8c546f39e7e7fd7b32f3..ab44416d08d486c35a54785602c14bdbd08bb3c4 100644 (file)
@@ -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);