From 731c501155ef139f53029c0e58409b80f0af3a0c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Micha=C5=82=20Go=C5=82=C4=99biowski?= Date: Mon, 15 May 2017 20:37:14 +0200 Subject: [PATCH] Docs:Tests: Update IE/Edge-related support comments & tests Closes gh-3661 --- src/ajax.js | 2 +- src/core.js | 2 +- src/effects.js | 5 +++-- src/manipulation.js | 2 +- test/unit/ajax.js | 2 +- test/unit/css.js | 29 +++++++++++++++-------------- test/unit/dimensions.js | 40 ++++++++++++++++------------------------ test/unit/support.js | 5 ++--- 8 files changed, 40 insertions(+), 47 deletions(-) diff --git a/src/ajax.js b/src/ajax.js index 36f707d7d..27e533955 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -538,7 +538,7 @@ jQuery.extend( { if ( s.crossDomain == null ) { urlAnchor = document.createElement( "a" ); - // Support: IE <=8 - 11, Edge 12 - 13 + // Support: IE <=8 - 11, Edge 12 - 15 // IE throws exception on accessing the href property if url is malformed, // e.g. http://example.com:80x/ try { diff --git a/src/core.js b/src/core.js index 83d427c78..ce43d737e 100644 --- a/src/core.js +++ b/src/core.js @@ -288,7 +288,7 @@ jQuery.extend( { }, // Convert dashed to camelCase; used by the css and data modules - // Support: IE <=9 - 11, Edge 12 - 13 + // Support: IE <=9 - 11, Edge 12 - 15 // Microsoft forgot to hump their vendor prefix (#9572) camelCase: function( string ) { return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); diff --git a/src/effects.js b/src/effects.js index 879b36135..b8da7ce37 100644 --- a/src/effects.js +++ b/src/effects.js @@ -148,9 +148,10 @@ function defaultPrefilter( elem, props, opts ) { // Restrict "overflow" and "display" styles during box animations if ( isBox && elem.nodeType === 1 ) { - // Support: IE <=9 - 11, Edge 12 - 13 + // Support: IE <=9 - 11, Edge 12 - 15 // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; // Identify a display type, preferring old show/hide data over the CSS cascade diff --git a/src/manipulation.js b/src/manipulation.js index cd225a6db..2db1cfe3f 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -38,7 +38,7 @@ var /* eslint-enable */ - // Support: IE <=10 - 11, Edge 12 - 13 + // Support: IE <=10 - 11, Edge 12 - 13 only // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ rnoInnerhtml = /" ).css( "position", "absolute" ).css( "position", "fake value" ); + var el = jQuery( "
" ).css( "position", "absolute" ).css( "position", "fake value" ); assert.equal( el.css( "position" ), "absolute", "The old style is kept when setting an unrecognized value" ); - el = jQuery( "
" ).css( "position", "absolute" ).css( "position", " " ); - - // Support: Edge 14 - // Edge collapses whitespace-only values when setting a style property and - // there is no easy way for us to work around it. Just skip the test there - // and hope for the better future. - if ( /edge\//i.test( navigator.userAgent ) ) { - assert.ok( true, "Skipped (Edge 14 handles whitespace-only values incorrectly)" ); - } else { - assert.equal( el.css( "position" ), "absolute", "The old style is kept when setting to a space" ); - } +} ); + +// Support: Edge 14 - 15 +// Edge collapses whitespace-only values when setting a style property and +// there is no easy way for us to work around it. Just skip the test there +// and hope for the better future. +QUnit[ /\bedge\//i.test( navigator.userAgent ) ? "skip" : "test" ]( + "Keep the last style if the new one is a non-empty whitespace (gh-3204)", + function( assert ) { + assert.expect( 1 ); + + var el = jQuery( "
" ).css( "position", "absolute" ).css( "position", " " ); + assert.equal( el.css( "position" ), "absolute", "The old style is kept when setting to a space" ); } ); QUnit.test( "Reset the style if set to an empty string", function( assert ) { diff --git a/test/unit/dimensions.js b/test/unit/dimensions.js index cba821185..76850e9e2 100644 --- a/test/unit/dimensions.js +++ b/test/unit/dimensions.js @@ -295,12 +295,10 @@ QUnit.test( "child of a hidden elem (or unconnected node) has accurate inner/out assert.equal( $divChild.outerWidth(), $divNormal.outerWidth(), "child of a hidden element outerWidth() is wrong see #9441" ); assert.equal( $divChild.outerWidth( true ), $divNormal.outerWidth( true ), "child of a hidden element outerWidth( true ) is wrong see #9300" ); - // Support: IE 10 - 11, Edge 12 - 13+ - // Child height is not always decimal - assert.equal( $divChild.height().toFixed( 3 ), $divNormal.height().toFixed( 3 ), "child of a hidden element height() is wrong see #9441" ); - assert.equal( $divChild.innerHeight().toFixed( 3 ), $divNormal.innerHeight().toFixed( 3 ), "child of a hidden element innerHeight() is wrong see #9441" ); - assert.equal( $divChild.outerHeight().toFixed( 3 ), $divNormal.outerHeight().toFixed( 3 ), "child of a hidden element outerHeight() is wrong see #9441" ); - assert.equal( $divChild.outerHeight( true ).toFixed( 3 ), $divNormal.outerHeight( true ).toFixed( 3 ), "child of a hidden element outerHeight( true ) is wrong see #9300" ); + assert.equal( $divChild.height(), $divNormal.height(), "child of a hidden element height() is wrong see #9441" ); + assert.equal( $divChild.innerHeight(), $divNormal.innerHeight(), "child of a hidden element innerHeight() is wrong see #9441" ); + assert.equal( $divChild.outerHeight(), $divNormal.outerHeight(), "child of a hidden element outerHeight() is wrong see #9441" ); + assert.equal( $divChild.outerHeight( true ), $divNormal.outerHeight( true ), "child of a hidden element outerHeight( true ) is wrong see #9300" ); // tests that child div of an unconnected div works the same as a normal div assert.equal( $divUnconnected.width(), $divNormal.width(), "unconnected element width() is wrong see #9441" ); @@ -308,12 +306,10 @@ QUnit.test( "child of a hidden elem (or unconnected node) has accurate inner/out assert.equal( $divUnconnected.outerWidth(), $divNormal.outerWidth(), "unconnected element outerWidth() is wrong see #9441" ); assert.equal( $divUnconnected.outerWidth( true ), $divNormal.outerWidth( true ), "unconnected element outerWidth( true ) is wrong see #9300" ); - // Support: IE 10 - 11, Edge 12 - 13+ - // Child height is not always decimal - assert.equal( $divUnconnected.height().toFixed( 3 ), $divNormal.height().toFixed( 3 ), "unconnected element height() is wrong see #9441" ); - assert.equal( $divUnconnected.innerHeight().toFixed( 3 ), $divNormal.innerHeight().toFixed( 3 ), "unconnected element innerHeight() is wrong see #9441" ); - assert.equal( $divUnconnected.outerHeight().toFixed( 3 ), $divNormal.outerHeight().toFixed( 3 ), "unconnected element outerHeight() is wrong see #9441" ); - assert.equal( $divUnconnected.outerHeight( true ).toFixed( 3 ), $divNormal.outerHeight( true ).toFixed( 3 ), "unconnected element outerHeight( true ) is wrong see #9300" ); + assert.equal( $divUnconnected.height(), $divNormal.height(), "unconnected element height() is wrong see #9441" ); + assert.equal( $divUnconnected.innerHeight(), $divNormal.innerHeight(), "unconnected element innerHeight() is wrong see #9441" ); + assert.equal( $divUnconnected.outerHeight(), $divNormal.outerHeight(), "unconnected element outerHeight() is wrong see #9441" ); + assert.equal( $divUnconnected.outerHeight( true ), $divNormal.outerHeight( true ), "unconnected element outerHeight( true ) is wrong see #9300" ); // teardown html $divHiddenParent.remove(); @@ -372,12 +368,10 @@ QUnit.test( "box-sizing:border-box child of a hidden elem (or unconnected node) assert.equal( $divChild.outerWidth(), $divNormal.outerWidth(), "child of a hidden element outerWidth() is wrong see #10413" ); assert.equal( $divChild.outerWidth( true ), $divNormal.outerWidth( true ), "child of a hidden element outerWidth( true ) is wrong see #10413" ); - // Support: IE 10 - 11, Edge 12 - 13+ - // Child height is not always decimal - assert.equal( $divChild.height().toFixed( 3 ), $divNormal.height().toFixed( 3 ), "child of a hidden element height() is wrong see #10413" ); - assert.equal( $divChild.innerHeight().toFixed( 3 ), $divNormal.innerHeight().toFixed( 3 ), "child of a hidden element innerHeight() is wrong see #10413" ); - assert.equal( $divChild.outerHeight().toFixed( 3 ), $divNormal.outerHeight().toFixed( 3 ), "child of a hidden element outerHeight() is wrong see #10413" ); - assert.equal( $divChild.outerHeight( true ).toFixed( 3 ), $divNormal.outerHeight( true ).toFixed( 3 ), "child of a hidden element outerHeight( true ) is wrong see #10413" ); + assert.equal( $divChild.height(), $divNormal.height(), "child of a hidden element height() is wrong see #10413" ); + assert.equal( $divChild.innerHeight(), $divNormal.innerHeight(), "child of a hidden element innerHeight() is wrong see #10413" ); + assert.equal( $divChild.outerHeight(), $divNormal.outerHeight(), "child of a hidden element outerHeight() is wrong see #10413" ); + assert.equal( $divChild.outerHeight( true ), $divNormal.outerHeight( true ), "child of a hidden element outerHeight( true ) is wrong see #10413" ); // tests that child div of an unconnected div works the same as a normal div assert.equal( $divUnconnected.width(), $divNormal.width(), "unconnected element width() is wrong see #10413" ); @@ -385,12 +379,10 @@ QUnit.test( "box-sizing:border-box child of a hidden elem (or unconnected node) assert.equal( $divUnconnected.outerWidth(), $divNormal.outerWidth(), "unconnected element outerWidth() is wrong see #10413" ); assert.equal( $divUnconnected.outerWidth( true ), $divNormal.outerWidth( true ), "unconnected element outerWidth( true ) is wrong see #10413" ); - // Support: IE 10 - 11, Edge 12 - 13+ - // Child height is not always decimal - assert.equal( $divUnconnected.height().toFixed( 3 ), $divNormal.height().toFixed( 3 ), "unconnected element height() is wrong see #10413" ); - assert.equal( $divUnconnected.innerHeight().toFixed( 3 ), $divNormal.innerHeight().toFixed( 3 ), "unconnected element innerHeight() is wrong see #10413" ); - assert.equal( $divUnconnected.outerHeight().toFixed( 3 ), $divNormal.outerHeight().toFixed( 3 ), "unconnected element outerHeight() is wrong see #10413" ); - assert.equal( $divUnconnected.outerHeight( true ).toFixed( 3 ), $divNormal.outerHeight( true ).toFixed( 3 ), "unconnected element outerHeight( true ) is wrong see #10413" ); + assert.equal( $divUnconnected.height(), $divNormal.height(), "unconnected element height() is wrong see #10413" ); + assert.equal( $divUnconnected.innerHeight(), $divNormal.innerHeight(), "unconnected element innerHeight() is wrong see #10413" ); + assert.equal( $divUnconnected.outerHeight(), $divNormal.outerHeight(), "unconnected element outerHeight() is wrong see #10413" ); + assert.equal( $divUnconnected.outerHeight( true ), $divNormal.outerHeight( true ), "unconnected element outerHeight( true ) is wrong see #10413" ); // teardown html $divHiddenParent.remove(); diff --git a/test/unit/support.js b/test/unit/support.js index 5be781942..daa8dc664 100644 --- a/test/unit/support.js +++ b/test/unit/support.js @@ -55,17 +55,16 @@ testIframe( ); ( function() { - var expected, version, + var expected, userAgent = window.navigator.userAgent; if ( /edge\//i.test( userAgent ) ) { - version = userAgent.match( /edge\/(\d+)/i )[ 1 ]; expected = { "ajax": true, "boxSizingReliable": true, "checkClone": true, "checkOn": true, - "clearCloneStyle": version >= 13, + "clearCloneStyle": true, "cors": true, "createHTMLDocument": true, "focusin": false, -- 2.39.5