From: Brandon Aaron 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.biz/?a=commitdiff_plain;h=537d7ca86902df1d2b61155d2822c7552030d846;hp=415a0916b54a0dd3123893d67cc9091dd8ebe1d6;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" ); }; });