diff options
-rw-r--r-- | src/css.js | 5 | ||||
-rw-r--r-- | test/unit/dimensions.js | 23 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/css.js b/src/css.js index 0735fc3d8..ea1037ded 100644 --- a/src/css.js +++ b/src/css.js @@ -285,9 +285,8 @@ if ( document.defaultView && document.defaultView.getComputedStyle ) { if ( document.documentElement.currentStyle ) { currentStyle = function( elem, name ) { - var left, + var left, rsLeft, ret = elem.currentStyle && elem.currentStyle[ name ], - rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ], style = elem.style; if ( ret === null && style ) { @@ -300,8 +299,10 @@ if ( document.documentElement.currentStyle ) { // If we're not dealing with a regular pixel number // but a number that has a weird ending, we need to convert it to pixels if ( !rnumpx.test( ret ) && rnum.test( ret ) ) { + // Remember the original values left = style.left; + rsLeft = elem.runtimeStyle && elem.runtimeStyle.left; // Put in the new values to get a computed value out if ( rsLeft ) { diff --git a/test/unit/dimensions.js b/test/unit/dimensions.js index 768816803..3ccf651ba 100644 --- a/test/unit/dimensions.js +++ b/test/unit/dimensions.js @@ -245,6 +245,29 @@ test("child of a hidden elem has accurate inner/outer/Width()/Height() see #944 $divNormal.remove(); }); +test("getting dimensions shouldnt modify runtimeStyle see #9233", function() { + expect( 1 ); + + var $div = jQuery( "<div>" ).appendTo( "#qunit-fixture" ), + div = $div.get( 0 ), + runtimeStyle = div.runtimeStyle; + + if ( runtimeStyle ) { + div.runtimeStyle.marginLeft = "12em"; + div.runtimeStyle.left = "11em"; + } + + $div.outerWidth( true ); + + if ( runtimeStyle ) { + equal( div.runtimeStyle.left, "11em", "getting dimensions modifies runtimeStyle, see #9233" ); + } else { + ok( true, "this browser doesnt support runtimeStyle, see #9233" ); + } + + $div.remove(); +}); + test("outerHeight()", function() { expect(11); |