From aa3fabce461313f7c31e9a250df57165f15be873 Mon Sep 17 00:00:00 2001 From: Mike Sherov Date: Sun, 22 Jul 2012 21:58:23 -0400 Subject: Fix #12088, Safari 5 and more percentages in getComputedStyle In particular, min-width and max-width are taunting the awesome hack. Closes gh-865. --- src/css.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/css.js') diff --git a/src/css.js b/src/css.js index 6c43be399..41b978542 100644 --- a/src/css.js +++ b/src/css.js @@ -276,7 +276,7 @@ jQuery.extend({ // and getComputedStyle here to produce a better gzip size if ( window.getComputedStyle ) { curCSS = function( elem, name ) { - var ret, width, + var ret, width, minWidth, maxWidth, computed = getComputedStyle( elem, null ), style = elem.style; @@ -288,13 +288,20 @@ if ( window.getComputedStyle ) { } // A tribute to the "awesome hack by Dean Edwards" - // WebKit uses "computed value (percentage if specified)" instead of "used value" for margins - // which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values - if ( !jQuery.support.pixelMargin && rmargin.test( name ) && rnumnonpx.test( ret ) ) { + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { width = style.width; - style.width = ret; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + style.minWidth = style.maxWidth = style.width = ret; ret = computed.width; + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; } } -- cgit v1.2.3