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 = /
-
diff --git a/test/integration/data/gh-1764-fullscreen-iframe.html b/test/integration/data/gh-1764-fullscreen-iframe.html
index bed56b8ec..2ea3283a6 100644
--- a/test/integration/data/gh-1764-fullscreen-iframe.html
+++ b/test/integration/data/gh-1764-fullscreen-iframe.html
@@ -2,7 +2,6 @@
-
Test for gh-1764 - test iframe
diff --git a/test/integration/data/gh-1764-fullscreen.js b/test/integration/data/gh-1764-fullscreen.js
index b2bb4cdb5..f6f6efa8f 100644
--- a/test/integration/data/gh-1764-fullscreen.js
+++ b/test/integration/data/gh-1764-fullscreen.js
@@ -10,52 +10,13 @@ function bootstrapFrom( mainSelector, mode ) {
return;
}
- var fullscreenSupported = document.exitFullscreen ||
- document.exitFullscreen ||
- document.msExitFullscreen ||
- document.mozCancelFullScreen ||
- document.webkitExitFullscreen;
-
function isFullscreen() {
- return !!( document.fullscreenElement ||
- document.mozFullScreenElement ||
- document.webkitFullscreenElement ||
- document.msFullscreenElement );
- }
-
- function requestFullscreen( element ) {
- if ( !isFullscreen() ) {
- if ( element.requestFullscreen ) {
- element.requestFullscreen();
- } else if ( element.msRequestFullscreen ) {
- element.msRequestFullscreen();
- } else if ( element.mozRequestFullScreen ) {
- element.mozRequestFullScreen();
- } else if ( element.webkitRequestFullscreen ) {
- element.webkitRequestFullscreen();
- }
- }
- }
-
- function exitFullscreen() {
- if ( document.exitFullscreen ) {
- document.exitFullscreen();
- } else if ( document.msExitFullscreen ) {
- document.msExitFullscreen();
- } else if ( document.mozCancelFullScreen ) {
- document.mozCancelFullScreen();
- } else if ( document.webkitExitFullscreen ) {
- document.webkitExitFullscreen();
- }
+ return !!( document.fullscreenElement );
}
function runTest() {
var dimensions;
- if ( !fullscreenSupported ) {
- jQuery( mainSelector + " .result" )
- .attr( "class", "result success" )
- .text( "Fullscreen mode is not supported in this browser. Test not run." );
- } else if ( !isFullscreen() ) {
+ if ( !isFullscreen() ) {
jQuery( mainSelector + " .result" )
.attr( "class", "result warn" )
.text( "Enable fullscreen mode to fire the test." );
@@ -80,20 +41,15 @@ function bootstrapFrom( mainSelector, mode ) {
function toggleFullscreen() {
if ( isFullscreen() ) {
- exitFullscreen();
+ document.exitFullscreen();
} else {
- requestFullscreen( jQuery( mainSelector + " .container" )[ 0 ] );
+ jQuery( mainSelector + " .container" )[ 0 ].requestFullscreen();
}
}
$( mainSelector + " .toggle-fullscreen" ).on( "click", toggleFullscreen );
- $( document ).on( [
- "webkitfullscreenchange",
- "mozfullscreenchange",
- "fullscreenchange",
- "MSFullscreenChange"
- ].join( " " ), runTest );
+ $( document ).on( "fullscreenchange", runTest );
runTest();
}
diff --git a/test/integration/gh-1764-fullscreen.html b/test/integration/gh-1764-fullscreen.html
index 1cba65943..299722c6c 100644
--- a/test/integration/gh-1764-fullscreen.html
+++ b/test/integration/gh-1764-fullscreen.html
@@ -2,7 +2,6 @@
-
Test for gh-1764