]> source.dussan.org Git - jquery.git/commitdiff
CSS: Don’t trim whitespace of undefined custom property
authorAnders Kaseorg <andersk@mit.edu>
Mon, 19 Sep 2022 21:08:12 +0000 (14:08 -0700)
committerMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Mon, 19 Sep 2022 21:20:14 +0000 (23:20 +0200)
Fixes gh-5105
Closes gh-5106

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
(cherry picked from commit ed306c0261ab63746040e5d58bb4477c3069a427)

src/css/curCSS.js
test/unit/css.js

index f36e369ce18c55e8f6d5a85b61d22e80bb2475d4..eed7f633e95493345942b2c2474ac42fdc089239 100644 (file)
@@ -31,7 +31,7 @@ function curCSS( elem, name, computed ) {
                ret = computed.getPropertyValue( name ) || computed[ name ];
 
                // trim whitespace for custom property (issue gh-4926)
-               if ( isCustomProp ) {
+               if ( isCustomProp && ret !== undefined ) {
 
                        // rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED
                        // as whitespace while CSS does not, but this is not a problem
index 2df877de85b3a58c756507ec4770facab57f485d..fc7d4c3d4ff1533c67f3f555186713b24e1738f3 100644 (file)
@@ -1760,6 +1760,7 @@ QUnit.test( "Do not throw on frame elements from css method (trac-15098)", funct
                        "        --prop10:\f\r\n\t val10 \f\r\n\t;\n" +
                        "        --prop11:\u000C\u000D\u000A\u0009\u0020val11\u0020\u0009\u000A\u000D\u000C;\n" +
                        "        --prop12:\u000Bval12\u000B;\n" +
+                       "        --empty:;\n" +
                        "    }\n" +
                        "</style>"
                );
@@ -1768,7 +1769,7 @@ QUnit.test( "Do not throw on frame elements from css method (trac-15098)", funct
                        $elem = jQuery( "<div>" ).addClass( "test__customProperties" )
                                .appendTo( "#qunit-fixture" ),
                        webkitOrBlink = /\bsafari\b/i.test( navigator.userAgent ),
-                       expected = 17;
+                       expected = 19;
 
                if ( webkitOrBlink ) {
                        expected -= 2;
@@ -1814,6 +1815,8 @@ QUnit.test( "Do not throw on frame elements from css method (trac-15098)", funct
                assert.equal( $elem.css( "--prop10" ), "val10", "Multiple preceding and following escaped unicode whitespace trimmed" );
                assert.equal( $elem.css( "--prop11" ), "val11", "Multiple preceding and following unicode whitespace trimmed" );
                assert.equal( $elem.css( "--prop12" ), "\u000Bval12\u000B", "Multiple preceding and following non-CSS whitespace reserved" );
+               assert.equal( $elem.css( "--empty" ), undefined );
+               assert.equal( $elem.css( "--nonexistent" ), undefined );
        } );
 
        QUnit[ supportsCssVars ? "test" : "skip" ]( "Don't append px to CSS vars", function( assert ) {