diff --git a/.github/workflows/browserstack.yml b/.github/workflows/browserstack.yml index d9d3b4764..9a7bc591c 100644 --- a/.github/workflows/browserstack.yml +++ b/.github/workflows/browserstack.yml @@ -21,7 +21,6 @@ jobs: fail-fast: false matrix: BROWSER: - - 'IE_11' - 'Safari_latest' - 'Safari_latest-1' - 'Chrome_latest' diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 36dcf9367..4b387cbe7 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -87,34 +87,6 @@ jobs: - name: Run tests run: npm run ${{ matrix.NPM_SCRIPT }} - ie: - runs-on: windows-latest - env: - NODE_VERSION: 20.x - name: test:ie - IE - steps: - - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 - with: - node-version: ${{ env.NODE_VERSION }} - - - name: Cache - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock- - - - name: Install dependencies - run: npm install - - - name: Run tests in Edge in IE mode - run: npm run test:ie - safari: runs-on: macos-latest env: diff --git a/build/tasks/npmcopy.js b/build/tasks/npmcopy.js index 91cfae95f..f5ba9d20d 100644 --- a/build/tasks/npmcopy.js +++ b/build/tasks/npmcopy.js @@ -11,8 +11,6 @@ const files = { "core-js-bundle/core-js-bundle.js": "core-js-bundle/minified.js", "core-js-bundle/LICENSE": "core-js-bundle/LICENSE", - "npo/npo.js": "native-promise-only/lib/npo.src.js", - "qunit/qunit.js": "qunit/qunit/qunit.js", "qunit/qunit.css": "qunit/qunit/qunit.css", "qunit/LICENSE.txt": "qunit/LICENSE.txt", diff --git a/eslint.config.js b/eslint.config.js index ceb943dbb..30bb48c07 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -271,6 +271,15 @@ export default [ } }, + { + files: [ + "test/jquery.js" + ], + languageOptions: { + ecmaVersion: 2020 + } + }, + { files: [ "test/unit/deferred.js" diff --git a/package-lock.json b/package-lock.json index eeafef535..9d7ad0f02 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,6 @@ "jsdom": "24.1.1", "marked": "13.0.2", "multiparty": "4.2.3", - "native-promise-only": "0.8.1", "promises-aplus-tests": "2.1.2", "q": "1.5.1", "qunit": "2.21.1", @@ -7014,12 +7013,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", - "dev": true - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", diff --git a/package.json b/package.json index 818435842..3c3f46993 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,6 @@ "test:chrome": "npm run pretest && npm run build:main && npm run test:unit -- -v -b chrome -h", "test:edge": "npm run pretest && npm run build:main && npm run test:unit -- -v -b edge -h", "test:firefox": "npm run pretest && npm run build:main && npm run test:unit -- -v -b firefox -h", - "test:ie": "npm run pretest && npm run build:main && npm run test:unit -- -v -b ie", "test:safari": "npm run pretest && npm run build:main && npm run test:unit -- -b safari", "test:server": "node test/runner/server.js", "test:esm": "npm run pretest && npm run build:main && npm run test:unit -- --esm -h", @@ -131,7 +130,6 @@ "jsdom": "24.1.1", "marked": "13.0.2", "multiparty": "4.2.3", - "native-promise-only": "0.8.1", "promises-aplus-tests": "2.1.2", "q": "1.5.1", "qunit": "2.21.1", diff --git a/src/ajax.js b/src/ajax.js index ab96c3625..aab2d7577 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -455,20 +455,12 @@ jQuery.extend( { if ( !responseHeaders ) { responseHeaders = {}; while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - - // Support: IE 11+ - // `getResponseHeader( key )` in IE doesn't combine all header - // values for the provided key into a single result with values - // joined by commas as other browsers do. Instead, it returns - // them on separate lines. - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = match[ 2 ]; } } match = responseHeaders[ key.toLowerCase() + " " ]; } - return match == null ? null : match.join( ", " ); + return match == null ? null : match; }, // Raw string @@ -542,24 +534,8 @@ jQuery.extend( { // A cross-domain request is in order when the origin doesn't match the current origin. if ( s.crossDomain == null ) { urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11+ - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11+ - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } + urlAnchor.href = s.url; + s.crossDomain = originAnchor.origin !== urlAnchor.origin; } // Apply prefilters diff --git a/src/ajax/load.js b/src/ajax/load.js index 044dc09dd..a8c90ebc4 100644 --- a/src/ajax/load.js +++ b/src/ajax/load.js @@ -50,8 +50,8 @@ jQuery.fn.load = function( url, params, callback ) { self.html( selector ? - // If a selector was specified, locate the right elements in a dummy div - // Exclude scripts to avoid IE 'Permission Denied' errors + // If a selector was specified, locate the right elements in a dummy div. + // Exclude scripts. jQuery( "
" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : // Otherwise use the full result diff --git a/src/attributes/attr.js b/src/attributes/attr.js index 118895916..a71e5e821 100644 --- a/src/attributes/attr.js +++ b/src/attributes/attr.js @@ -1,8 +1,6 @@ import { jQuery } from "../core.js"; import { access } from "../core/access.js"; -import { nodeName } from "../core/nodeName.js"; import { rnothtmlwhite } from "../var/rnothtmlwhite.js"; -import { isIE } from "../var/isIE.js"; jQuery.fn.extend( { attr: function( name, value ) { @@ -86,20 +84,3 @@ jQuery.extend( { } } } ); - -// Support: IE <=11+ -// An input loses its value after becoming a radio -if ( isIE ) { - jQuery.attrHooks.type = { - set: function( elem, value ) { - if ( value === "radio" && nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - }; -} diff --git a/src/attributes/prop.js b/src/attributes/prop.js index 7eef6c8f7..036d23e68 100644 --- a/src/attributes/prop.js +++ b/src/attributes/prop.js @@ -1,6 +1,5 @@ import { jQuery } from "../core.js"; import { access } from "../core/access.js"; -import { isIE } from "../var/isIE.js"; var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i; @@ -54,7 +53,6 @@ jQuery.extend( { tabIndex: { get: function( elem ) { - // Support: IE <=9 - 11+ // elem.tabIndex doesn't always return the // correct value when it hasn't been explicitly set // Use proper attribute retrieval (trac-12072) @@ -85,39 +83,6 @@ jQuery.extend( { } } ); -// Support: IE <=11+ -// Accessing the selectedIndex property forces the browser to respect -// setting selected on the option. The getter ensures a default option -// is selected when in an optgroup. ESLint rule "no-unused-expressions" -// is disabled for this code since it considers such accessions noop. -if ( isIE ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - // eslint-disable-next-line no-unused-expressions - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - - var parent = elem.parentNode; - if ( parent ) { - // eslint-disable-next-line no-unused-expressions - parent.selectedIndex; - - if ( parent.parentNode ) { - // eslint-disable-next-line no-unused-expressions - parent.parentNode.selectedIndex; - } - } - } - }; -} - jQuery.each( [ "tabIndex", "readOnly", diff --git a/src/attributes/val.js b/src/attributes/val.js index 34d1669fc..93d1923e8 100644 --- a/src/attributes/val.js +++ b/src/attributes/val.js @@ -1,6 +1,4 @@ import { jQuery } from "../core.js"; -import { isIE } from "../var/isIE.js"; -import { stripAndCollapse } from "../core/stripAndCollapse.js"; import { nodeName } from "../core/nodeName.js"; import "../core/init.js"; @@ -140,23 +138,6 @@ jQuery.extend( { } } ); -if ( isIE ) { - jQuery.valHooks.option = { - get: function( elem ) { - - var val = elem.getAttribute( "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11+ - // option.text throws exceptions (trac-14686, trac-14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }; -} - // Radios and checkboxes getter/setter jQuery.each( [ "radio", "checkbox" ], function() { jQuery.valHooks[ this ] = { diff --git a/src/core.js b/src/core.js index c79455507..035ab5fd4 100644 --- a/src/core.js +++ b/src/core.js @@ -323,14 +323,7 @@ jQuery.extend( { contains: function( a, b ) { var bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - - // Support: IE 9 - 11+ - // IE doesn't have `contains` on SVG. - a.contains ? - a.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); + return a === bup || !!( bup && bup.nodeType === 1 && a.contains( bup ) ); }, merge: function( first, second ) { @@ -395,7 +388,7 @@ jQuery.extend( { } // Flatten any nested arrays - return flat( ret ); + return flat.call( ret ); }, // A global GUID counter for objects diff --git a/src/core/isAttached.js b/src/core/isAttached.js index 12a60ee92..758dc8192 100644 --- a/src/core/isAttached.js +++ b/src/core/isAttached.js @@ -1,19 +1,8 @@ import { jQuery } from "../core.js"; -import { documentElement } from "../var/documentElement.js"; -var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }, - composed = { composed: true }; +var composed = { composed: true }; -// Support: IE 9 - 11+ -// Check attachment across shadow DOM boundaries when possible (gh-3504). -// Provide a fallback for browsers without Shadow DOM v1 support. -if ( !documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }; +export function isAttached( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; } - -export { isAttached }; diff --git a/src/core/parseXML.js b/src/core/parseXML.js index fa1b94c00..74b84ea25 100644 --- a/src/core/parseXML.js +++ b/src/core/parseXML.js @@ -7,21 +7,15 @@ jQuery.parseXML = function( data ) { return null; } - // Support: IE 9 - 11+ - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) {} + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; - if ( !xml || parserErrorElem ) { - jQuery.error( "Invalid XML: " + ( - parserErrorElem ? - jQuery.map( parserErrorElem.childNodes, function( el ) { - return el.textContent; - } ).join( "\n" ) : - data - ) ); + parserErrorElem = xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( parserErrorElem ) { + jQuery.error( "Invalid XML: " + + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) + ); } return xml; }; diff --git a/src/css.js b/src/css.js index 72a807bfc..fb628d87a 100644 --- a/src/css.js +++ b/src/css.js @@ -1,13 +1,12 @@ import { jQuery } from "./core.js"; import { access } from "./core/access.js"; +import { camelCase } from "./core/camelCase.js"; import { nodeName } from "./core/nodeName.js"; import { rcssNum } from "./var/rcssNum.js"; -import { isIE } from "./var/isIE.js"; import { rnumnonpx } from "./css/var/rnumnonpx.js"; import { rcustomProp } from "./css/var/rcustomProp.js"; import { cssExpand } from "./css/var/cssExpand.js"; import { isAutoPx } from "./css/isAutoPx.js"; -import { cssCamelCase } from "./css/cssCamelCase.js"; import { getStyles } from "./css/var/getStyles.js"; import { swap } from "./css/var/swap.js"; import { curCSS } from "./css/curCSS.js"; @@ -120,8 +119,7 @@ function getWidthOrHeight( elem, dimension, extra ) { // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = isIE || extra, - isBorderBox = boxSizingNeeded && + isBorderBox = extra && jQuery.css( elem, "boxSizing", false, styles ) === "border-box", valueIsBorderBox = isBorderBox, @@ -143,14 +141,6 @@ function getWidthOrHeight( elem, dimension, extra ) { // This happens for inline elements with no explicit setting (gh-3571) val === "auto" || - // Support: IE 9 - 11+ - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - ( isIE && isBorderBox ) || - - // Support: IE 10 - 11+ - // IE misreports `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. // Support: Firefox 70+ // Firefox includes border widths // in computed dimensions for table rows. (gh-4529) @@ -204,7 +194,7 @@ jQuery.extend( { // Make sure that we're working with the right name var ret, type, hooks, - origName = cssCamelCase( name ), + origName = camelCase( name ), isCustomProp = rcustomProp.test( name ), style = elem.style; @@ -240,12 +230,6 @@ jQuery.extend( { value += ret && ret[ 3 ] || ( isAutoPx( origName ) ? "px" : "" ); } - // Support: IE <=9 - 11+ - // background-* props of a cloned element affect the source element (trac-8908) - if ( isIE && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - // If a hook was provided, use that value, otherwise just set the specified value if ( !hooks || !( "set" in hooks ) || ( value = hooks.set( elem, value, extra ) ) !== undefined ) { @@ -273,7 +257,7 @@ jQuery.extend( { css: function( elem, name, extra, styles ) { var val, num, hooks, - origName = cssCamelCase( name ), + origName = camelCase( name ), isCustomProp = rcustomProp.test( name ); // Make sure that we're working with the right name. We don't @@ -316,17 +300,14 @@ jQuery.each( [ "height", "width" ], function( _i, dimension ) { get: function( elem, computed, extra ) { if ( computed ) { - // Certain elements can have dimension info if we invisibly show them + // Certain elements can have dimension info if we invisibly show them, // but it must have a current display style that would benefit return rdisplayswap.test( jQuery.css( elem, "display" ) ) && // Support: Safari <=8 - 12+, Chrome <=73+ // Table columns in WebKit/Blink have non-zero offsetWidth & zero // getBoundingClientRect().width unless display is changed. - // Support: IE <=11+ - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + !elem.getBoundingClientRect().width ? swap( elem, cssShow, function() { return getWidthOrHeight( elem, dimension, extra ); } ) : diff --git a/src/css/cssCamelCase.js b/src/css/cssCamelCase.js deleted file mode 100644 index a87897989..000000000 --- a/src/css/cssCamelCase.js +++ /dev/null @@ -1,12 +0,0 @@ -import { camelCase } from "../core/camelCase.js"; - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/; - -// Convert dashed to camelCase, handle vendor prefixes. -// Used by the css & effects modules. -// Support: IE <=9 - 11+ -// Microsoft forgot to hump their vendor prefix (trac-9572) -export function cssCamelCase( string ) { - return camelCase( string.replace( rmsPrefix, "ms-" ) ); -} diff --git a/src/css/curCSS.js b/src/css/curCSS.js index b0f0a7555..c975c23de 100644 --- a/src/css/curCSS.js +++ b/src/css/curCSS.js @@ -10,22 +10,18 @@ export function curCSS( elem, name, computed ) { computed = computed || getStyles( elem ); - // getPropertyValue is needed for `.css('--customProperty')` (gh-3144) if ( computed ) { + // getPropertyValue is needed for `.css('--customProperty')` (gh-3144) + // Some regular properties - if their camelCased form is identical to + // the kebab-cased one - would return the value from `getPropertyValue` + // instead of directly from a property of `computed`. The value from + // direct property access would be identical, though, so this is not + // an issue. + // // A fallback to direct property access is needed as `computed`, being // the output of `getComputedStyle`, contains camelCased keys and // `getPropertyValue` requires kebab-case ones. - // - // Support: IE <=9 - 11+ - // IE only supports `"float"` in `getPropertyValue`; in computed styles - // it's only available as `"cssFloat"`. We no longer modify properties - // sent to `.css()` apart from camelCasing, so we need to check both. - // Normally, this would create difference in behavior: if - // `getPropertyValue` returns an empty string, the value returned - // by `.css()` would be `undefined`. This is usually the case for - // disconnected elements. However, in IE even disconnected elements - // with no styles return `"none"` for `getPropertyValue( "float" )` ret = computed.getPropertyValue( name ) || computed[ name ]; if ( isCustomProp && ret ) { @@ -54,10 +50,5 @@ export function curCSS( elem, name, computed ) { } } - return ret !== undefined ? - - // Support: IE <=9 - 11+ - // IE returns zIndex value as an integer. - ret + "" : - ret; + return ret; } diff --git a/src/css/finalPropName.js b/src/css/finalPropName.js index b11e92394..6253fe0c2 100644 --- a/src/css/finalPropName.js +++ b/src/css/finalPropName.js @@ -1,6 +1,6 @@ import { document } from "../var/document.js"; -var cssPrefixes = [ "Webkit", "Moz", "ms" ], +var cssPrefixes = [ "Webkit", "Moz" ], emptyStyle = document.createElement( "div" ).style, vendorProps = {}; diff --git a/src/css/support.js b/src/css/support.js index 93459c6b6..589946d5a 100644 --- a/src/css/support.js +++ b/src/css/support.js @@ -12,9 +12,6 @@ if ( !div.style ) { return; } -// Support: IE 10 - 11+ -// IE misreports `getComputedStyle` of table rows with width/height -// set in CSS while `offset*` properties report correct values. // Support: Firefox 70+ // Only Firefox includes border widths // in computed dimensions. (gh-4529) @@ -25,12 +22,11 @@ support.reliableTrDimensions = function() { tr = document.createElement( "tr" ); table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; - tr.style.cssText = "box-sizing:content-box;border:1px solid"; + tr.style.cssText = "box-sizing:content-box;border-top:1px solid"; // Support: Chrome 86+ // Height set through cssText does not get applied. // Computed height then comes back as 0. - tr.style.height = "1px"; div.style.height = "9px"; // Support: Android Chrome 86+ diff --git a/src/css/var/getStyles.js b/src/css/var/getStyles.js index 9dc4298d5..da7beff8e 100644 --- a/src/css/var/getStyles.js +++ b/src/css/var/getStyles.js @@ -1,15 +1,3 @@ export function getStyles( elem ) { - - // Support: IE <=11+ (trac-14150) - // In IE popup's `window` is the opener window which makes `window.getComputedStyle( elem )` - // break. Using `elem.ownerDocument.defaultView` avoids the issue. - var view = elem.ownerDocument.defaultView; - - // `document.implementation.createHTMLDocument( "" )` has a `null` `defaultView` - // property; check `defaultView` truthiness to fallback to window in such a case. - if ( !view ) { - view = window; - } - - return view.getComputedStyle( elem ); + return window.getComputedStyle( elem ); } diff --git a/src/data.js b/src/data.js index ce2813e97..cd31e8022 100644 --- a/src/data.js +++ b/src/data.js @@ -103,15 +103,10 @@ jQuery.fn.extend( { if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { i = attrs.length; while ( i-- ) { - - // Support: IE 11+ - // The attrs elements can be null (trac-14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); } } dataPriv.set( elem, "hasDataAttrs", true ); diff --git a/src/effects.js b/src/effects.js index b94e2a488..defd01dcd 100644 --- a/src/effects.js +++ b/src/effects.js @@ -1,11 +1,11 @@ import { jQuery } from "./core.js"; +import { camelCase } from "./core/camelCase.js"; import { document } from "./var/document.js"; import { rcssNum } from "./var/rcssNum.js"; import { rnothtmlwhite } from "./var/rnothtmlwhite.js"; import { cssExpand } from "./css/var/cssExpand.js"; import { isHiddenWithinTree } from "./css/var/isHiddenWithinTree.js"; import { adjustCSS } from "./css/adjustCSS.js"; -import { cssCamelCase } from "./css/cssCamelCase.js"; import { dataPriv } from "./data/var/dataPriv.js"; import { showHide } from "./css/showHide.js"; @@ -143,10 +143,7 @@ function defaultPrefilter( elem, props, opts ) { // Restrict "overflow" and "display" styles during box animations if ( isBox && elem.nodeType === 1 ) { - // Support: IE <=9 - 11+ - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + opts.overflow = style.overflow; // Identify a display type, preferring old show/hide data over the CSS cascade restoreDisplay = dataShow && dataShow.display; @@ -189,9 +186,7 @@ function defaultPrefilter( elem, props, opts ) { if ( opts.overflow ) { style.overflow = "hidden"; anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; + style.overflow = opts.overflow; } ); } @@ -250,7 +245,7 @@ function propFilter( props, specialEasing ) { // camelCase, specialEasing and expand cssHook pass for ( index in props ) { - name = cssCamelCase( index ); + name = camelCase( index ); easing = specialEasing[ name ]; value = props[ index ]; if ( Array.isArray( value ) ) { diff --git a/src/event.js b/src/event.js index a216f9a8c..61f8cf9a7 100644 --- a/src/event.js +++ b/src/event.js @@ -3,7 +3,6 @@ import { documentElement } from "./var/documentElement.js"; import { rnothtmlwhite } from "./var/rnothtmlwhite.js"; import { rcheckableType } from "./var/rcheckableType.js"; import { slice } from "./var/slice.js"; -import { isIE } from "./var/isIE.js"; import { acceptData } from "./data/var/acceptData.js"; import { dataPriv } from "./data/var/dataPriv.js"; import { nodeName } from "./core/nodeName.js"; @@ -353,8 +352,6 @@ jQuery.event = { // Support: Firefox <=42 - 66+ // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11+ - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) !( event.type === "click" && event.button >= 1 ) ) { for ( ; cur !== this; cur = cur.parentNode || this ) { @@ -726,28 +723,6 @@ jQuery.each( { jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - // Support: IE 11+ - // Attach a single focusin/focusout handler on the document while someone wants focus/blur. - // This is because the former are synchronous in IE while the latter are async. In other - // browsers, all those handlers are invoked synchronously. - function focusMappedHandler( nativeEvent ) { - - // `eventHandle` would already wrap the event, but we need to change the `type` here. - var event = jQuery.event.fix( nativeEvent ); - event.type = nativeEvent.type === "focusin" ? "focus" : "blur"; - event.isSimulated = true; - - // focus/blur don't bubble while focusin/focusout do; simulate the former by only - // invoking the handler at the lower level. - if ( event.target === event.currentTarget ) { - - // The setup part calls `leverageNative`, which, in turn, calls - // `jQuery.event.add`, so event handle will already have been set - // by this point. - dataPriv.get( this, "handle" )( event ); - } - } - jQuery.event.special[ type ] = { // Utilize native event if possible so blur/focus sequence is correct @@ -758,13 +733,8 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp // dataPriv.set( this, "blur", ... ) leverageNative( this, type, true ); - if ( isIE ) { - this.addEventListener( delegateType, focusMappedHandler ); - } else { - - // Return false to allow normal processing in the caller - return false; - } + // Return false to allow normal processing in the caller + return false; }, trigger: function() { @@ -776,13 +746,9 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp }, teardown: function() { - if ( isIE ) { - this.removeEventListener( delegateType, focusMappedHandler ); - } else { - // Return false to indicate standard teardown should be applied - return false; - } + // Return false to indicate standard teardown should be applied + return false; }, // Suppress native focus or blur if we're currently inside diff --git a/src/manipulation.js b/src/manipulation.js index 41cb8eadb..71d87c1eb 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -1,6 +1,5 @@ import { jQuery } from "./core.js"; import { isAttached } from "./core/isAttached.js"; -import { isIE } from "./var/isIE.js"; import { push } from "./var/push.js"; import { access } from "./core/access.js"; import { rtagName } from "./manipulation/var/rtagName.js"; @@ -17,11 +16,7 @@ import "./core/init.js"; import "./traversing.js"; import "./event.js"; -var - - // Support: IE <=10 - 11+ - // In IE using regex groups here causes severe slowdowns. - rnoInnerhtml = /