From: Brandon Aaron <brandon.aaron@gmail.com>
Date: Mon, 17 Sep 2007 19:14:05 +0000 (+0000)
Subject: Fix width/height to work properly on window/document
X-Git-Url: http://git.asbjorn.it/?a=commitdiff_plain;h=537d7ca86902df1d2b61155d2822c7552030d846;p=jquery.git

Fix width/height to work properly on window/document
---

diff --git a/src/core.js b/src/core.js
index 1236f1c..960af44 100644
--- a/src/core.js
+++ b/src/core.js
@@ -1114,16 +1114,27 @@ jQuery.each( [ "Height", "Width" ], function(i,name){
 	var n = name.toLowerCase();
 	
 	jQuery.fn[ n ] = function(h) {
+		// Get window width or height
 		return this[0] == window ?
+			// Opera reports document.body.client[Width/Height] properly in both quirks and standards
+			jQuery.browser.opera && document.body["client" + name] || 
+			
+			// Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths)
 			jQuery.browser.safari && self["inner" + name] ||
-			jQuery.boxModel && Math.max(document.documentElement["client" + name], document.body["client" + name]) ||
-			document.body["client" + name] :
+			
+			// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+			jQuery.boxModel && document.documentElement["client" + name] || document.body["client" + name] :
 		
+		// Get document width or height
 			this[0] == document ?
+				// Either scroll[Width/Height] or offset[Width/Height], whichever is greater (Mozilla reports scrollWidth the same as offsetWidth)
 				Math.max( document.body["scroll" + name], document.body["offset" + name] ) :
         
+		// Get or set width or height on the element
 				h == undefined ?
+					// Get width or height on the element
 					( this.length ? jQuery.css( this[0], n ) : null ) :
+					// Set the width or height on the element (default to pixels if value is unitless)
 					this.css( n, h.constructor == String ? h : h + "px" );
 	};
 });