]> source.dussan.org Git - jquery.git/commitdiff
Landing pull request 562. Make sure runtimeStyle isn't affected by dimensions. Fixes...
authorMike Sherov <mike.sherov@gmail.com>
Fri, 28 Oct 2011 14:53:42 +0000 (10:53 -0400)
committertimmywil <timmywillisn@gmail.com>
Fri, 28 Oct 2011 14:53:42 +0000 (10:53 -0400)
More Details:
 - https://github.com/jquery/jquery/pull/562
 - http://bugs.jquery.com/ticket/9233

src/css.js
test/unit/dimensions.js

index 0735fc3d85d04a3238879cdae2d534c4da7e2072..ea1037ded516500984bb583e722d583d785f451d 100644 (file)
@@ -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 ) {
index 7688168036b386a9bb548e91599b463b1a93c52c..3ccf651ba12c6dea65509436f9329880ae39e15c 100644 (file)
@@ -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);