diff --git a/src/dimensions.js b/src/dimensions.js index 9ea688d76..d4d7915ff 100644 --- a/src/dimensions.js +++ b/src/dimensions.js @@ -28,14 +28,13 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { jQuery.fn[ type ] = function( value ) { return jQuery.access( this, function( elem, type, value ) { - var doc, docElemProp, orig, ret; + var doc, orig, ret; if ( jQuery.isWindow( elem ) ) { - // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat - doc = elem.document; - docElemProp = doc.documentElement[ clientProp ]; - return jQuery.support.boxModel && docElemProp || - doc.body && doc.body[ clientProp ] || docElemProp; + // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there + // isn't a whole lot we can do. See pull request at this URL for discussion: + // https://github.com/jquery/jquery/pull/764 + return elem.document.documentElement[ clientProp ]; } // Get document width or height diff --git a/test/unit/dimensions.js b/test/unit/dimensions.js index 842072cd4..01135f1a1 100644 --- a/test/unit/dimensions.js +++ b/test/unit/dimensions.js @@ -9,7 +9,7 @@ function fn( val ) { } function testWidth( val ) { - expect(8); + expect(9); var $div = jQuery("#nothiddendiv"); $div.width( val(30) ); @@ -34,6 +34,8 @@ function testWidth( val ) { equal( blah.width( val(10) ), blah, "Make sure that setting a width on an empty set returns the set." ); equal( blah.width(), null, "Make sure 'null' is returned on an empty set"); + equal( jQuery(window).width(), document.documentElement.clientWidth, "Window width is equal to width reported by window/document." ); + jQuery.removeData($div[0], "olddisplay", true); } @@ -63,7 +65,7 @@ test("width(Function(args))", function() { }); function testHeight( val ) { - expect(8); + expect(9); var $div = jQuery("#nothiddendiv"); $div.height( val(30) ); @@ -88,6 +90,8 @@ function testHeight( val ) { equal( blah.height( val(10) ), blah, "Make sure that setting a height on an empty set returns the set." ); equal( blah.height(), null, "Make sure 'null' is returned on an empty set"); + equal( jQuery(window).height(), document.documentElement.clientHeight, "Window width is equal to width reported by window/document." ); + jQuery.removeData($div[0], "olddisplay", true); }