]> source.dussan.org Git - jquery.git/commitdiff
Return null for outer/inner width/height calls on window/document. Fixes #7557.
authortimmywil <tim.willison@thisismedium.com>
Wed, 25 May 2011 23:49:50 +0000 (19:49 -0400)
committertimmywil <tim.willison@thisismedium.com>
Wed, 25 May 2011 23:49:50 +0000 (19:49 -0400)
src/css.js
src/dimensions.js
test/unit/dimensions.js

index 46f6bf31f8ba6111194fb447982c34c44e40eb48..10d36b765ed1326bd427e882552f28f0b1f86fcc 100644 (file)
@@ -170,6 +170,11 @@ jQuery.each(["height", "width"], function( i, name ) {
                get: function( elem, computed, extra ) {
                        var val;
 
+                       // Tests for window/document
+                       if ( !elem.style ) {
+                               return null;
+                       }
+
                        if ( computed ) {
                                if ( elem.offsetWidth !== 0 ) {
                                        val = getWH( elem, name, extra );
@@ -196,7 +201,6 @@ jQuery.each(["height", "width"], function( i, name ) {
 
                                if ( val < 0 || val == null ) {
                                        val = elem.style[ name ];
-
                                        // Should return "auto" instead of 0, use 0 for
                                        // temporary backwards-compat
                                        return val === "" || val === "auto" ? "0px" : val;
index e2d411dd22897ee6e26c81c55f2943ad617ec316..1ab92d1dd6b5baaf5b0b46776e6083ddbe355949 100644 (file)
@@ -7,15 +7,17 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
 
        // innerHeight and innerWidth
        jQuery.fn["inner" + name] = function() {
-               return this[0] ?
-                       parseFloat( jQuery.css( this[0], type, "padding" ) ) :
+               var ret;
+               return this[0] && !isNaN( ret = parseFloat(jQuery.css( this[0], type, "padding" )) ) ?
+                       ret :
                        null;
        };
 
        // outerHeight and outerWidth
        jQuery.fn["outer" + name] = function( margin ) {
-               return this[0] ?
-                       parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) :
+               var ret;
+               return this[0] && !isNaN( ret = parseFloat(jQuery.css( this[0], type, margin ? "margin" : "border" )) ) ?
+                       ret :
                        null;
        };
 
index 641165f4fcb38d0506c8a2d7c37b204f6f84714d..83cc3908f28038f217423ac43d674571371b535b 100644 (file)
@@ -107,7 +107,13 @@ test("height() with function args", function() {
 });
 
 test("innerWidth()", function() {
-       expect(4);
+       expect(8);
+
+       equals(jQuery(window).innerWidth(), null, "Test on window without margin option");
+       equals(jQuery(window).innerWidth(true), null, "Test on window with margin option");
+
+       equals(jQuery(document).innerWidth(), null, "Test on document without margin option");
+       equals(jQuery(document).innerWidth(true), null, "Test on document with margin option");
 
        var $div = jQuery("#nothiddendiv");
        // set styles
@@ -136,7 +142,13 @@ test("innerWidth()", function() {
 });
 
 test("innerHeight()", function() {
-       expect(4);
+       expect(8);
+
+       equals(jQuery(window).innerHeight(), null, "Test on window without margin option");
+       equals(jQuery(window).innerHeight(true), null, "Test on window with margin option");
+
+       equals(jQuery(document).innerHeight(), null, "Test on document without margin option");
+       equals(jQuery(document).innerHeight(true), null, "Test on document with margin option");
 
        var $div = jQuery("#nothiddendiv");
        // set styles
@@ -165,7 +177,12 @@ test("innerHeight()", function() {
 });
 
 test("outerWidth()", function() {
-       expect(7);
+       expect(11);
+
+       equal( jQuery( window ).outerWidth(), null, "Test on window without margin option" );
+       equal( jQuery( window ).outerWidth( true ), null, "Test on window with margin option" );
+       equal( jQuery( document ).outerWidth(), null, "Test on document without margin option" );
+       equal( jQuery( document ).outerWidth( true ), null, "Test on document with margin option" );
 
        var $div = jQuery("#nothiddendiv");
        $div.css("width", 30);
@@ -195,7 +212,12 @@ test("outerWidth()", function() {
 });
 
 test("outerHeight()", function() {
-       expect(7);
+       expect(11);
+
+       equal( jQuery( window ).outerHeight(), null, "Test on window without margin option" );
+       equal( jQuery( window ).outerHeight( true ), null, "Test on window with margin option" );
+       equal( jQuery( document ).outerHeight(), null, "Test on document without margin option" );
+       equal( jQuery( document ).outerHeight( true ), null, "Test on document with margin option" );
 
        var $div = jQuery("#nothiddendiv");
        $div.css("height", 30);