Commit Graph

4348 Commits

Author SHA1 Message Date
Michał Gołębiowski-Owczarek
05184cc448
Selector: Make empty attribute selectors work in IE again
qSA in IE 11/Edge often (but not always) don't find elements with an empty
name attribute selector (`[name=""]`). Detect that & fall back to Sizzle
traversal.

Interestingly, IE 10 & older don't seem to have the issue.

Fixes gh-4435
Closes gh-4510
2019-11-18 22:10:55 +01:00
Michał Gołębiowski-Owczarek
d0ce00cdfa
Core: Migrate from AMD to ES modules 🎉
Migrate all source AMD modules to ECMAScript modules. The final bundle
is compiled by a custom build process that uses Rollup under the hood.

Test files themselves are still loaded via RequireJS as that has to work in
IE 11.

Tests can now be run in "Load as modules" mode which replaces the previous
"Load with AMD" option. That option of running tests doesn't work in IE
and Edge as it requires support for dynamic imports.

Some of the changes required by the migration:
* check `typeof` of `noGlobal` instead of using the variable directly
  as it's not available when modules are used
* change the nonce module to be an object as ECMASscript module exports
  are immutable
* remove some unused exports
* import `./core/parseHTML.js` directly in `jquery.js` so that it's not
  being cut out when the `ajax` module is excluded in a custom compilation

Closes gh-4541
2019-11-18 21:15:03 +01:00
Michał Gołębiowski-Owczarek
15750b0af2
Selector: Use shallow document comparisons in uniqueSort
IE/Edge sometimes crash when comparing documents between frames using the strict
equality operator (`===` & `!==`). Funnily enough, shallow comparisons
(`==` & `!=`) work without crashing.

The change to shallow comparisons in `src/selector.js` was done in gh-4471 but
relevant changes in `src/selector/uniqueSort.js` were missed. Those changes
have landed in Sizzle in jquery/sizzle#459.

Fixes gh-4441
Closes gh-4512
Ref gh-4471
Ref jquery/sizzle#459
2019-10-21 19:04:48 +02:00
Michał Gołębiowski-Owczarek
f09d92100f
Docs: Update most URLs to HTTPS
Closes gh-4511
2019-10-21 19:03:48 +02:00
Michał Gołębiowski-Owczarek
26415e081b
CSS: Workaround buggy getComputedStyle on table rows in IE/Edge
Fixes gh-4490
Closes gh-4506
2019-10-14 18:41:35 +02:00
Michał Gołębiowski-Owczarek
ed66d5a22b
Selector: Make selectors with leading combinators use qSA again
An optimization added in jquery/sizzle#431 skips the temporary IDs for selectors
not using child or descendant combinators. For sibling combinators, though, this
pushes a selector with a leading combinator to qSA directly which crashes and
falls back to a slower Sizzle route.

This commit makes selectors with leading combinators not skip the selector
rewriting. Note that after jquery/jquery#4454 & jquery/sizzle#453, all modern
browsers other than Edge leverage the :scope pseudo-class, avoiding temporary
id attributes.

Closes gh-4509
Ref jquery/sizzle#431
2019-10-14 18:28:19 +02:00
Michał Gołębiowski-Owczarek
4504fc3d72
Manipulation:Selector: Use the nodeName util where possible to save size
Saves 20 bytes.

Closes gh-4504
2019-10-08 22:41:59 +02:00
Sean Robinson
50871a5a85 Ajax: Do not execute scripts for unsuccessful HTTP responses
The script transport used to evaluate fetched script sources which is
undesirable for unsuccessful HTTP responses. This is different to other data
types where such a convention was fine (e.g. in case of JSON).

Fixes gh-4250
Closes gh-4379
2019-09-26 02:43:30 +02:00
Ahmed.S.ElAfifi
9df4f1de12 Core: Use Array.prototype.flat where supported
Calling `Array.prototype.concat.apply( [], inputArray )` to flatten `inputArray`
crashes for large arrays; using `Array.prototype.flat` avoids these issues in
browsers that support it. In case it's necessary to support these large arrays
even in older browsers, a polyfill for `Array.prototype.flat` can be loaded.
This is already being done by many applications.

Fixes gh-4320
Closes gh-4459
2019-09-25 01:38:21 +02:00
Michał Gołębiowski-Owczarek
aa6344baf8
Selector: Use shallow document comparisons to avoid IE/Edge crashes
IE/Edge sometimes crash when comparing documents between frames using the strict
equality operator (`===` & `!==`). Funnily enough, shallow comparisons
(`==` & `!=`) work without crashing.

Fixes gh-4441
Closes gh-4471
2019-09-25 00:41:07 +02:00
Michał Gołębiowski-Owczarek
b59107f5d7
Core: Remove private copies of push, sort & splice from the jQuery prototype
Closes gh-4473
2019-09-24 02:12:36 +02:00
Michał Gołębiowski-Owczarek
78420d427c
Core: Implement .even() & .odd() to replace POS :even & :odd
`:even` & `:odd` are deprecated since jQuery 3.4.0 & will be removed in 4.0.0.
The new `even()` & `odd()` methods will make the migration easier.

Closes gh-4485
2019-09-24 02:04:53 +02:00
Michał Gołębiowski-Owczarek
f810080e8e Deprecated: Fix AMD parameter order
Ref gh-4461
2019-08-31 01:40:45 +02:00
Michał Gołębiowski-Owczarek
29a9544a4f
Selector: reduce size, simplify setDocument
With new selector code doing less convoluted support tests, it was possible
to extract a lot of logic out of setDocument & also reduce size.

This commit also backports jquery/sizzle#439 that was reverted by mistake
during a switch from JSHint + JSCS to ESLint.

Closes gh-4462
Ref jquery/sizzle#442
Ref jquery/sizzle#439
2019-08-26 19:15:53 +02:00
Michał Gołębiowski-Owczarek
abdc89ac2e
Ajax: Simplify jQuery.ajaxSettings.xhr
Previously, jQuery.ajaxSettings.xhr, contents were wrapped in a try-catch
as we defined jQuery.support.ajax & jQuery.support.cors executed during the
jQuery load and we didn't want to crash if IE had native XHR disabled (which
is possible). While jQuery hasn't supported the ActiveX-based XHR since 2.0,
jQuery with XHR disabled could still be used for its other features in such
a crippled browser.

Since gh-4347, jQuery.support.ajax & jQuery.support.cors no longer exist, so
we don't need the try-catch anymore.

Fixes gh-1967
Closes gh-4467
Ref gh-4347
2019-08-26 19:01:26 +02:00
Shashanka Nataraj
5ea5946094 Core: Deprecate jQuery.trim
Fixes gh-4363
Closes gh-4461
2019-08-22 02:06:26 +02:00
Michał Gołębiowski-Owczarek
df6a7f7f0f
Selector: Leverage the :scope pseudo-class where possible
The `:scope` pseudo-class[1] has surprisingly good browser support: Chrome,
Firefox & Safari have supported if for a long time; only IE & Edge lack support.
This commit leverages this pseudo-class to get rid of the ID hack in most cases.
Adding a temporary ID may cause layout thrashing which was reported a few times
in [the past.

We can't completely eliminate the ID hack in modern browses as sibling selectors
require us to change context to the parent and then `:scope` stops applying to
what we'd like. But it'd still improve performance in the vast majority of
cases.

[1] https://developer.mozilla.org/en-US/docs/Web/CSS/:scope

Fixes gh-4453
Closes gh-4454
Ref gh-4332
Ref jquery/sizzle#405
2019-08-19 18:41:03 +02:00
Michał Gołębiowski-Owczarek
cef4b73179
Selector: Bring back querySelectorAll shortcut usage
Due to a faulty IE 8 workaround removal, the fast path qSA mode was skipped
when jQuery's find was called on an element node - i.e. in most cases. 😱

Ref gh-4395
Closes gh-4452
2019-08-09 12:42:05 +02:00
Michał Gołębiowski-Owczarek
47835965bd Selector: Inline Sizzle into the selector module
This commit removes Sizzle from jQuery, inlining its code & removing obsolete
workarounds where applicable.

The selector-native module has been removed. Further work on the selector
module may decrease the size enough that it will no longer be necessary. If
it turns out it's still useful, we'll reinstate it but the code will look
different anyway as we'll want to share as much code as possible with
the existing selector module.

The Sizzle AUTHORS.txt file has been merged with the jQuery one - people are
sorted by their first contributions to either of the two repositories.

The commit reduces the gzipped jQuery size by 1460 bytes compared to master.

Closes gh-4395
2019-07-29 21:19:21 +02:00
Michał Gołębiowski-Owczarek
79b74e043a
Selector: Port Sizzle tests to jQuery
Apart from porting most Sizzle tests to jQuery (mostly to its selector module),
this commit fixes selector-native so that a jQuery custom compilation that
excludes Sizzle passes all tests as well.

Closes gh-4406
2019-06-26 21:39:10 +02:00
Michał Gołębiowski-Owczarek
438b1a3e8a
Build: ESLint: forbid unused function parameters
This commit requires all function parameters to be used, not just the last one.
In cases where that's not possible as we need to match an external API, there's
an escape hatch of prefixing an unused argument with `_`.

This change makes it easier to catch unused AMD dependencies and unused
parameters in internal functions the API of which we may change at will, among
other things.

Unused AMD dependencies have been removed as part of this commit.

Closes gh-4381
2019-05-13 22:25:11 +02:00
Michał Gołębiowski-Owczarek
3527a38405
Core: Remove IE-specific support tests, rely on document.documentMode
Also, update some tests to IE-sniff when deciding whether
to skip a test.

Fixes gh-4386
Closes gh-4387
2019-05-13 21:39:56 +02:00
Michał Gołębiowski-Owczarek
ccbd6b9342
Traversing: Fix contents() on <object>s with children in IE
The original fix didn't account for the fact that in IE `<object>` elements
with no `data` attribute have an object `contentDocument`. The fix leverages
the fact that this special object has a null prototype.

Closes gh-4390
Ref gh-4384
Ref gh-4385
2019-05-08 10:12:36 +02:00
Pat O'Callaghan
4d865d96aa Traversing: Fix contents() on <object>s with children
Fixes gh-4384
Closes gh-4385
2019-05-06 19:23:00 +02:00
Wonseop Kim
110802c7f2 Effect: Fix a unnecessary conditional statement in .stop()
Because of the above conditional, the 'type' variable has a value of type
'string' or undefined. Therefore, boolean comparisons for 'type' variable
is always unnecessary because it return true. The patch removed the
unnecessary conditional statement.

Fixes gh-4374
Closes gh-4375
2019-05-01 14:57:55 +02:00
Michał Gołębiowski-Owczarek
b220f6df88
Build: Fix AMD dependencies in curCSS
A leftover `rboxStyle` was left in the wrapper parameters but not in the
dependency array, causing `getStyles` to be undefined in AMD mode.

Since `rboxStyle` is no longer used, it's now removed.

Ref gh-4347
Closes gh-4380
2019-04-30 21:21:18 +02:00
Michał Gołębiowski-Owczarek
cf84696fd1
Core: Drop support for IE <11, iOS <11, Firefox <65, Android Browser & PhantomJS
Also, update support comments format to match format described in:
https://github.com/jquery/contribute.jquery.org/issues/95#issuecomment-69379197
with the change from:
https://github.com/jquery/contribute.jquery.org/issues/95#issuecomment-448998379
(open-ended ranges end with `+`).

Fixes gh-3950
Fixes gh-4299
Closes gh-4347
2019-04-29 22:56:09 +02:00
Michał Gołębiowski-Owczarek
58f0c00bed
Core: Remove deprecated jQuery APIs
Fixes gh-4056
Closes gh-4364
2019-04-29 22:04:52 +02:00
Michał Gołębiowski-Owczarek
8a74137693
Event: Stop shimming focusin & focusout events
Latest versions of all browsers now implement focusin & focusout natively
and they all converged on a common event order so it doesn't make much sense
for us to normalize it to a different order anymore.

Note that it means we no longer guarantee that focusin fires before focus
and focusout before blur.

Fixes gh-4300
Closes gh-4362
2019-04-29 21:13:36 +02:00
Michał Gołębiowski-Owczarek
8fae21200e
Data: Separate data & css/effects camelCase implementations
The camelCase implementation used by the data module no longer turns `-ms-foo`
into `msFoo` but to `MsFoo` now. This is because `data` is supposed to be
a generic utility not specifically bound to CSS use cases.

Fixes gh-3355
Closes gh-4365
2019-04-29 21:06:53 +02:00
Richard Gibson
eb6c0a7c97 Event: Prevent leverageNative from registering duplicate dummy handlers
(cherry-picked from 6c1e7dbf73)

Closes gh-4353
2019-04-29 20:50:00 +02:00
Richard Gibson
ddfa837664 Event: Fix handling of multiple async focus events
(cherry-picked from 24d71ac704)

Fixes gh-4350
Closes gh-4354
2019-04-29 20:49:30 +02:00
Michał Gołębiowski-Owczarek
874030583c
Build: Fix unresolved jQuery reference in finalPropName
Also, prevent further similar breakages by changing our ESLint configuration
to disallow relying on a global jQuery object in AMD modules.

Fixes gh-4358
Closes gh-4361
2019-04-17 19:56:25 +02:00
Michał Gołębiowski-Owczarek
00a9c2e5f4 CSS: Don't automatically add "px" to properties with a few exceptions
Fixes gh-2795
Closes gh-4055
Ref gh-4009
2019-04-08 19:26:08 +02:00
buddh4
005040379d Core: Preserve CSP nonce on scripts with src attribute in DOM manipulation
Fixes gh-4323
Closes gh-4328
2019-03-25 18:14:24 +01:00
Richard Gibson
fe5f04de8f Event: Prevent leverageNative from double-firing focusin
Also, reduce size.

Closes gh-4329
Ref gh-4279
2019-03-25 18:12:08 +01:00
Michał Gołębiowski-Owczarek
753d591aea
Core: Prevent Object.prototype pollution for $.extend( true, ... )
Closes gh-4333
2019-03-25 17:57:30 +01:00
Richard Gibson
669f720edc Event: Leverage native events for focus/blur/click; propagate additional data
Summary of the changes/fixes:
1. Trigger checkbox and radio click events identically (cherry-picked from
   b442abacbb that was reverted before).
2. Manually trigger a native event before checkbox/radio handlers.
3. Add test coverage for triggering namespaced native-backed events.
4. Propagate extra parameters passed when triggering the click event to
   the handlers.
5. Intercept and preserve namespaced native-backed events.
6. Leverage native events for focus and blur.
7. Accept that focusin handlers may fire more than once for now.

Fixes gh-1741
Fixes gh-3423
Fixes gh-3751
Fixes gh-4139
Closes gh-4279
Ref gh-1367
Ref gh-3494
2019-03-20 16:40:16 +01:00
Michał Gołębiowski-Owczarek
a0abd15b9e
CSS: Avoid forcing a reflow in width/height getters unless necessary
Fixes gh-4322
Closes gh-4325
Ref gh-3991
Ref gh-4010
Ref gh-4185
Ref gh-4187
2019-03-18 18:44:43 +01:00
Michał Gołębiowski-Owczarek
c10945d0e1
Build: Remove obsolete globals from ESLint configuration
We had quite a few obsolete globals declared in various ESLint config files. We also no longer allow to rely on the `noGlobal` & `jQuery` globals in the built file which is not needed.

Closes gh-4301
2019-02-19 13:20:57 +01:00
Michał Gołębiowski-Owczarek
5bdc85b82b
Core: Support passing nonce through jQuery.globalEval
Fixes gh-4278
Closes gh-4280
Ref gh-3541
Ref gh-4269
2019-01-21 18:42:39 +01:00
Michał Gołębiowski-Owczarek
e4de8b4626
Manipulation: Respect script nomodule attribute in DOM manipulation
PR #3869 added support for `<script type="module">` & some support for
the `nomodule` attribute but with no tests for `nomodule` and with the
attribute only respected on inline scripts. This commit adds support for
source-based scripts as well. It also adds tests for `nomodule`, including
making sure legacy browsers execute such scripts as they'd natively do - that's
the whole point of `nomodule` scripts, after all.

Fixes gh-4281
Closes gh-4282
Ref gh-3871
Ref gh-3869
2019-01-21 18:34:40 +01:00
Michał Gołębiowski-Owczarek
c7c2855ed1
Core: Preserve CSP nonce on scripts in DOM manipulation
Fixes gh-3541
Closes gh-4269
2019-01-14 19:29:54 +01:00
Richard Gibson
13de7c9ede
Manipulation: Restore _evalUrl jQuery.ajax calls to dataType: script
IE and iOS <10 XHR transport does not succeed on data: URIs
Ref gh-4243
Ref gh-4126
Closes gh-4258
2018-12-13 12:54:39 -05:00
Richard Gibson
c2026b117d Manipulation: Only evaluate HTTP-successful script src
Fixes gh-4126
Closes gh-4243
2018-12-12 17:21:24 +01:00
Marja Hölttä
4ffb1df8e4 Core: Tiny efficiency fix to jQuery.extend / jQuery.fn.extend (#4246)
Read target[name] only when it's needed.

In addition to doing the property read-only when needed, this
avoids a slow path in V8 (see the issue for more details).

Fixes gh-4245
Closes gh-4246
2018-12-12 17:13:18 +01:00
Timmy Willison
315199c156
Dimensions: fall back to offsetWidth/Height for border-box in IE
- Use getClientRects() to explicitly detect hidden/disconnected
  elements

Close gh-4223
Fixes gh-4102
2018-11-27 14:28:59 -05:00
Andrei Fangli
e0d9411569 Ajax: Fix getResponseHeader(key) for IE11
- getResponseHeader(key) combines all header values for the provided key into a
single result where values are concatenated by ', '. This does not happen for
IE11 since multiple values for the same header are returned on separate lines.
This makes the function only return the last value of the header for IE11.
- Updated ajax headers test to better cover Object.prototype collisions

Close gh-4173
Fixes gh-3403
2018-11-26 12:00:41 -05:00
Saptak Sengupta
9b77def560 Core: Recognize Shadow DOM in attachment checks
Allow `isAttached` to check Shadow DOM for attachment.

Fixes gh-3504
Closes gh-3996
Ref gh-3977
2018-11-09 12:15:31 +01:00
Michał Gołębiowski-Owczarek
354f6036f2
CSS: Don't read styles.position in the width/height cssHook unless necessary
Current width/height cssHook reads the computed position style even if not
necessary as the browser passes the scrollboxSize support test. That has been
changed.

This commit also makes the scrollboxSize support test in line with all others
(i.e. only return true or false) and changes the variable name in the hook
to make the code clearer.

Fixes gh-4185
Closes gh-4187
2018-10-08 18:25:15 +02:00
Bert Zhang
f997241f00 CSS: Don't auto-append "px" to possibly-unitless CSS grid properties
This commit adds some CSS grid-related properties to jQuery.cssNumber.

Fixes gh-4007
2018-08-29 15:54:27 +02:00
Richard Gibson
979809c5a8
Manipulation: Properly detect HTML elements with single-character names
Fixes gh-4124
Closes gh-4125
2018-07-13 00:35:08 -04:00
Jason Bedard
e743cbd285
Dimensions: fix computing outerWidth on SVGs
Fixes gh-3964
Closes gh-4096
2018-06-20 22:09:29 -07:00
Timmy Willison
0645099e02
Serialize: jQuery.param: return empty string when given null/undefined
Fixes gh-2633
Close gh-4108
2018-06-20 12:07:44 -04:00
Ed S
dc05f3c1d5 Build: Remove unnecessary ESLint exception
The linked-to issue was fixed 2 years ago.

Closes gh-4095
2018-06-18 18:50:16 +02:00
Michał Gołębiowski-Owczarek
75b77b4873
CSS: Don't auto-append "px" to CSS variables (#4064)
Fixes gh-4063
Closes gh-4064
2018-06-04 18:08:06 +02:00
Dave Methvin
dc48b11e0c squash! Set attributes all at once, src last 2018-05-14 14:09:43 -04:00
Dave Methvin
1f4375a342 Ajax: Allow custom attributes when script transport is used
Fixes gh-3028
Ref gh-2612

Useful, for example, to add `nonce`, `integrity`, or `crossorigin`.
2018-05-14 14:09:43 -04:00
Luis Emilio Velasco Sanchez
0ba8e38d0c Traversing: $.fn.contents() support for object
Fixes gh-4045
Closes gh-4046
2018-05-14 13:41:42 -04:00
Richard Gibson
821bf34353
CSS: Correctly detect scrollbox support with non-default zoom
Fixes gh-4029
Closes gh-4030
2018-05-07 09:28:18 -04:00
Michał Gołębiowski-Owczarek
f5e36bd8f2
CSS: Skip the px-appending logic for animations of non-element props
Without this change animating properties from jQuery.cssNumber on non-elements
throws an error.

Ref gh-4055
Closes gh-4061
2018-04-30 18:52:39 +02:00
tmybr11
899c56f6ad Event: Add "code" property to Event object
Fixes gh-3978
Closes gh-3998
2018-04-17 17:29:11 -04:00
Jason Bedard
73d7e6259c Dimensions: avoid fetching boxSizing when setting width/height
- this avoids forcing a reflow in some cases

Fixes #3991
2018-03-25 00:10:23 -07:00
Dave Methvin
2b5f5d5e90 CSS: Avoid filling jQuery.cssProps
Fixes gh-3986
Closes gh-4005

Avoids filling jQuery.cssProps by introducing a second internal
prop cache. This allows jQuery Migrate to detect external usage.
2018-03-19 20:33:35 -04:00
Saptak Sengupta
662083ed7b Core: Use isAttached to check for attachment of element
This change replaces the use of contains to check for attachment
by isAttached function

Closes gh-3977
Ref gh-3504
2018-03-05 18:57:03 +01:00
Saptak Sengupta
4765bb5c78
Filter: Use direct filter in winnow
for both simple and complex selectors

Fixes gh-3272
Closes gh-3910
2018-01-17 11:01:08 -05:00
Timmy Willison
fa793bee20
Tests: fix tests in AMD mode 2018-01-16 12:41:40 -05:00
basil.belokon
5d3a968e03
Manipulation: Add support for scripts with module type
Fixes gh-3871
Close gh-3869
2018-01-16 11:39:16 -05:00
Jason Bedard
1ea092a54b
Core: deprecate jQuery.type
Fixes gh-3605
Close gh-3895
2018-01-16 10:39:08 -05:00
Jason Bedard
c4494d4abc Core: deprecate jQuery.isNumeric
Fixes gh-2960
Closes gh-3888
2018-01-15 20:50:02 -08:00
Dave Methvin
d7237896c7 Ajax: Don't process non-string data property on no-entity-body requests
Fixes gh-3438
Closes gh-3781
2018-01-15 21:48:54 -05:00
Dave Methvin
022b69a44e Event: Move event aliases to deprecated
Fixes gh-3214
2018-01-15 21:40:45 -05:00
Jason Bedard
3d732cca6b Core: deprecate jQuery.isFunction
Fixes gh-3609
2018-01-15 09:26:19 -08:00
Timmy Willison
80f57f8a13
Attributes: allow array param in add/remove/toggleClass
+30 bytes instead of +182

Thanks to @faisaliyk for the first pass on this feature.

Fixes gh-3532
Close gh-3917
2018-01-08 11:43:53 -05:00
Timmy Willison
a88b48eab1
Manipulation: use .children to select tbody elements
- selectors beginning with a child combinator are not valid natively.
  This fixes the tests when using selector-native.js
2018-01-08 11:39:29 -05:00
Timmy Willison
3a8e44745c
Core: deprecate jQuery.proxy (not slated for removal)
Fixes gh-2958
Close gh-3885
2018-01-08 11:28:35 -05:00
Timmy Willison
909e0c9925
Core: deprecate jQuery.now
Fixes gh-2959
Close gh-3884
2018-01-08 11:24:45 -05:00
Timmy Willison
775caebd61
Core: adjust data tests to ensure proper camelCasing
- Add back camelCase to the public object (deprecate not remove)
Ref #3384
2018-01-08 11:21:22 -05:00
Nilton Cesar
64a289286a
Core: make camelCase function available only for internal usage
Close gh-3604
Fixes gh-3384
2018-01-08 11:21:22 -05:00
Saptak Sengupta
f00a07590e CSS: Correctly set support properties with non-default zoom
Fixes gh-3808
Closes gh-3872
2017-12-05 23:59:54 -05:00
Richard Gibson
0aa832afec
Manipulation: Reduce size by eliminating single-use variable
Closes gh-3851
2017-11-22 14:43:44 -05:00
Richard Gibson
94ddf62022 CSS: Detect more WebKit styles erroneously reported as percentages
Ref 692f9d4db3
Fixes gh-3777
Closes gh-3778
2017-09-18 11:59:50 -04:00
Richard Gibson
692f9d4db3 CSS: Avoid unit-conversion interference from CSS upper bounds
Fixes gh-2144
Closes gh-3745
2017-08-28 13:23:04 -04:00
Richard Gibson
3cf1d14ccc Dimensions: Don't trust non-pixel computed width/height
Fixes gh-3611
Closes gh-3741
2017-08-07 12:26:03 -04:00
Richard Gibson
a49578499e Dimensions: Improve offsetWidth/offsetHeight fallback
Fixes gh-3698
Fixes gh-3602
Closes gh-3738
2017-07-31 12:36:54 -04:00
Erik Lax
262acc6f1e
Ajax: add an ontimeout handler to all requests
Fixes gh-3586
Close gh-3590
2017-07-24 11:44:09 -04:00
Richard Gibson
20cdf4e7de Support: Properly check for IE9 absolute scrollbox mishandling
Ref gh-3589
Fixes gh-3699
Fixes gh-3730
Closes gh-3729
2017-07-18 15:40:41 -04:00
Richard Gibson
3fcddd6e72 Dimensions: Detect and account for content-box dimension mishandling
Fixes gh-3699
Closes gh-3700
2017-07-10 12:35:03 -04:00
Jason Bedard
a6a28d24c1 Offset: fix error from bad merge in #3695 2017-07-10 09:31:49 -07:00
Jason Bedard
0fb6b9a860 Revert "Offset: Resolve strict mode ClientRect "no setter" exception"
This reverts commit 3befe5911a.
2017-07-10 09:03:08 -07:00
Shashanka Nataraj
c18d608537
Core: Deprecate jQuery.isWindow
Fixes gh-3629
Close gh-3702
2017-07-10 12:00:27 -04:00
Pierre Spring
490db839fb
Event: stopPropagation() on native event-handler
Fixes gh-3693
Close gh-3694
2017-07-10 11:55:32 -04:00
Jason Bedard
36389288e8 Deferred: fix memory leak of promise callbacks
Fixes gh-3606
Closes gh-3657
2017-06-20 01:23:24 -04:00
Richard Gibson
80f1c8239e Dimensions: Include scroll gutter in "padding" box
Fixes gh-3589
Closes gh-3656
2017-06-19 15:42:55 -04:00
Michał Gołębiowski
731c501155 Docs:Tests: Update IE/Edge-related support comments & tests
Closes gh-3661
2017-05-15 20:37:14 +02:00
Michał Gołębiowski
bbf334282b CSS: Drop the float mapping from cssProps
Firefox 35 and newer support style.float directly.

Closes #3569
2017-05-06 20:52:07 +02:00
Richard Gibson
a16339b893 Core: Update isFunction to handle unusual-@@toStringTag input
Ref gh-3597
Fixes gh-3600
Fixes gh-3596
Closes gh-3617
2017-04-24 12:39:25 -04:00
Richard Gibson
1d2df772b4 Offset: Use correct offset parents; include all border/scroll values
Thanks @anseki

Fixes gh-3080
Fixes gh-3107
Closes gh-3096
Closes gh-3487
2017-04-24 12:15:39 -04:00
Boom Lee
e1b1b2d7fe Docs: Update links to HTML spec for stripAndCollapse (#3594) 2017-03-29 10:42:13 -04:00
Timmy Willison
c4598da429
CSS: retrieve inline style before computed
- Fixes an issue with getting computed style on detached elements
2017-03-20 13:43:18 -04:00
Timmy Willison
4d6b4536b2
Revert "Event: Trigger checkbox and radio click events identically"
This reverts commit b442abacbb.
2017-03-20 12:24:49 -04:00
Timmy Willison
473d2ea7d5
Dimensions: fall back to offsetWidth/Height for inline elems
Close gh-3577
Fixes gh-3571
2017-03-20 12:16:12 -04:00
Steve Mao
fcc9a9ec96
Tests: move readywait to an iframe test
Close gh-3576
Fixes gh-3573
2017-03-20 11:37:15 -04:00
Timmy Willison
96533cd0e8
CSS: remove dead code in getWidthOrHeight
- getCSS already falls back to inline styles

Ref gh-3561
2017-03-13 13:33:05 -04:00
Timmy Willison
c920ff6e32
Dimensions: ignore transforms when retrieving width/height
Close gh-3561
Fixes gh-3193
2017-03-13 13:32:16 -04:00
Connor Atherton
619bf98d5b CSS: Support custom properties
Fixes gh-3144
Closes gh-3199
Closes gh-3557
2017-03-07 14:52:08 +01:00
Michał Gołębiowski
be041e4da4
Core: move jQuery.fn.nodeName to jQuery.nodeName, add tests
Ref ac9e3016
Close gh-3560
2017-03-06 18:40:51 -05:00
Timmy Willison
56136897f2
Build: fix tests in AMD mode
- nodeName was included at the wrong spot in dependency lists
2017-03-06 18:31:44 -05:00
Oleg Gaidarenko
6d43dc4233 Effects: stabilize rAF logic & align timeout logic with it
rAF logic was introduced almost three years ago relative to this commit,
as a primary method for scheduling animation (see gh-1578 pull).

With it there was two substantial changes - one was explicitly mentioned
and the other was not.

First, if browser window was hidden aka `document.hidden === true`
it would immediately execute all scheduled animation without waiting
for time pass i.e. tick time become `0` instead of 13 ms of a default value.

Which created possibility for circular executions in case if `complete`
method executed the same animation (see gh-3434 issue).

And the second one - since then there was two ways of scheduling animation:
with `setInterval` and `requestAnimationFrame`, but there was a
difference in their execution.

In case of `setInterval` it waited default `jQuery.fx.interval` value before
actually starting the new tick, not counting the first step which wasn't
set to be executed through tick method (aka `jQuery.fx.tick`).

Whereas `requestAnimationFrame` first scheduled the call and executed
the `step` method right after that, counting the first call of
`jQuery.fx.timer`, `tick` was happening twice in one frame.

But since tests explicitly disabled rAF method i.e.
`requestAnimationFrame = null` and checking only `setInterval` logic,
since it's impossible to do it otherwise - we missed that change.

Faulty logic also was presented with `cancelAnimationFrame`, which couldn't
clear any timers since `raf` scheduler didn't define new `timerId` value.

Because that change was so subtle, apparently no user noticed it proving
that both `cancelAnimationFrame` and `clearInterval` code paths are redundant.

Since `cancelAnimationFrame` didn't work properly and rAF is and was a primary
used code path, plus the same approach is used in other popular animation libs.

Therefore those code paths were removed.

These changes also replace two different functions which schedule the animation
with one, which checks what type of logic should be used and executes it
appropriatley, but for secondary path it now uses `setTimeout` making it more
consistent with rAF path.

Since ticks are happening globally we also don't require to listen
`visibilitychange` event.

It also changes the way how first call is scheduled so execution of
animation will not happen twice in one frame.

No new tests were not introduced, since now `setTimeout` logic should be
equivalent to the rAF one, but one test was changed since now we actually
execute animation at the first tick.

Fixes gh-3434
Closes gh-3559
2017-03-06 19:17:14 +01:00
karan-96
ac9e301664 Core: Deprecate jQuery.nodeName
Fixes gh-3475
Closes gh-3505
2017-03-01 11:48:11 +01:00
Manoj Kumar
bd984f0ee2
Core: Move holdReady to deprecated
Fixes gh-3288
Close gh-3306
2017-02-13 10:55:39 -05:00
南漂一卒
3e3b09d68d Traversing: $.fn.contents() supports HTMLTemplateElement
Fixes gh-3436
Closes gh-3462
2017-01-29 23:32:15 +01:00
Alex Padilla
b442abacbb Event: Trigger checkbox and radio click events identically
Fixes gh-3423
Closes gh-3494
2017-01-19 16:51:49 -05:00
Richard Gibson
3c89329cb2 Effects: Resolve issues revealed by recent Callbacks fix
Notify full progress before resolving empty animations
Register animation callbacks before their ticker
Remove the right timer when immediately-done animations spawn more

Ref 9d822bc1c1
Fixes gh-3502
Fixes gh-3503
Closes gh-3496
2017-01-16 10:18:49 -08:00
Richard Gibson
efdb8a46e4 Manipulation: Restrict the tbody search to child nodes
For performance, use a querySelectorAll path instead of Javascript iteration.
http://codepen.io/anon/pen/vywJjx?editors=1010

Fixes gh-3439
Closes gh-3463
2017-01-09 11:37:12 -08:00
Richard Gibson
9d822bc1c1 Callbacks: Prevent add() from unlocking with-memory lists
Fixes gh-3469
Closes gh-3470
2017-01-09 11:33:39 -08:00
Richard Gibson
bf3a43eff8 Offset: Eliminate little-used internal function
Fixes gh-3449
Closes gh-3456
2016-12-19 12:00:46 -05:00
Michał Gołębiowski
cbc8638c38 Build: ESLint setup improvements
1. Use the short name of the preset in the config.
2. Run ESLint first on non-minified files.
3. Explicitly specify environments in every config file (those settings cascade
which means we've been assuming a Node.js environment where we shouldn't have).
2016-12-19 02:07:03 +01:00
Richard Gibson
5d79c64663 Deferred: Stop inventing jQuery.when() resolution values
Fixes gh-3442
Closes gh-3445
2016-12-16 11:45:35 -05:00
Jason Bedard
1777899a74 Offset: report offset for 0 sized elements
Fixes gh-3267
Closes gh-3367
2016-12-12 22:32:11 -08:00
Timmy Willison
7fbab88110
Build: jQuery Foundation -> JS Foundation
Close gh-3414
2016-12-05 11:54:38 -05:00
Manoj Kumar
1b9575b9d1 Core: Deprecate jQuery.isArray
Fixes gh-2961
Closes gh-3278
2016-11-30 12:22:24 +01:00
Steve Mao
fcb8a1b3eb
Core: remove precautionary variable readyFiring
Close gh-3284
2016-09-19 13:08:39 -04:00
Richard Gibson
b5d09b90ca
Core: Compress stripAndCollapse
Close gh-3318
2016-09-19 09:19:48 -04:00
Timmy Willison
3bbcce68d7
Core: rnotwhite -> rhtmlnotwhite and jQuery.trim -> stripAndCollapse
- Renames and changes rnotwhite to focus on HTML whitespace chars
- Change internal use of jQuery.trim to more accurate strip and collapse
- Adds tests to ensure HTML space characters are retained where valid
- Doesn't add tests where the difference is inconsequential and
  existing tests are adequate.

Fixes gh-3003
Fixes gh-3072
Close gh-3316
2016-09-15 10:40:27 -04:00
Timmy Willison
52e24471c8
Core: expose noConflict in AMD mode
- For compability reasons, we had already added the global
  in AMD mode, but without noConflict. This adds back noConflict
  to AMD (which fixes noConflict mode in the tests).

Fixes gh-2930
2016-08-15 11:54:55 -04:00
Dave Methvin
560c0c6f99 Traversing: Let .not(arraylike) pass non-element nodes
Fixes gh-3226
Closes gh-3261
2016-08-10 10:04:24 -04:00
Dave Methvin
cd4ad00478 Ajax: Don't mangle the URL when removing the anti-cache param
Fixes gh-3229
Closes gh-3253
2016-08-08 12:13:22 -04:00
Richard Gibson
76c5237cc4 Event: Optimize delegated event processing
Closes gh-3255
2016-08-04 23:52:12 -04:00
Oleg Gaidarenko
6acf4a7946 Build: .eslintrc -> .eslintrc.json
`.eslintrc` format is deprecated -
http://eslint.org/docs/user-guide/configuring#configuration-file-formats

Fixes gh-3248
Closes gh-3247
2016-08-02 21:16:20 +03:00
Oleg Gaidarenko
e4fd41f8fa Build: Update eslint config and fix associated errors 2016-07-15 21:42:25 +04:00
Michał Gołębiowski
6e605afb1f Build: Fix the regex removing the ESLint comment from wrapper.js
The new regex from after the switch from JSHint to ESLint wasn't catching
the ESLint pragma correctly.

Also, the spacing of the pragma comment was updated to match other comments.
2016-07-13 10:49:13 +02:00
Oleg Gaidarenko
522f546d96 Build: More ESLint related changes 2016-07-09 00:49:43 +03:00
Michał Gołębiowski
ad6a94c3f1 Core: Re-throw errors that happened in callbacks wrapped in jQuery ready
Also, expose jQuery.readyException that allows to overwrite the default
ready error handler.

Fixes gh-3174
Closes gh-3210
2016-07-07 10:23:06 +02:00
Oleg Gaidarenko
58c6ca9822 Build: ESLint details
Use eslint pragmas, fix new errors, etc

Closes gh-3148
2016-06-11 10:41:33 +03:00
Oleg Gaidarenko
f80ae67c53 Build: Switch from jscs+jshint to eslint 2016-06-11 10:39:51 +03:00
Scott González
7d21f02b9e Event: Add the most commonly used pointer event properties
Ref gh-3104
Close gh-3152
2016-06-09 13:16:20 -04:00
Michał Gołębiowski
d5dae259eb Deferred: Propagate progress correctly from unwrapped promises
Progress parameters are now correctly propagated from a deferred to which
another deferred resolved unwrapping it.

Thanks to @gibson042 for the report and a clear description of the problem
and the needed fix.

Fixes gh-3062
Closes gh-3150
2016-06-09 14:53:34 +02:00
Michał Gołębiowski
e06fda69f0 Attributes: Avoid infinite recursion on non-lowercase attribute getters
Attribute hooks are determined for the lowercase versions of attribute names
but this has not been reflected in the bool attribute hooks. The code that
temporarily removed a handler to avoid an infinite loop was removing an
incorrect handler causing stack overflow.

Fixes gh-3133
Refs gh-2914
Refs gh-2916
Closes gh-3134
2016-06-03 22:48:43 +02:00
Michał Gołębiowski
5430c540df Docs: Fix an incorrect comment in the attributes module
Attributes are no longer always treated as lowercase, although hooks for
them are. This commit fixes a no longer correct comment.
2016-06-03 11:51:33 +02:00
Dave Methvin
2df590e4ec Event: Allow constructing a jQuery.Event without a target
Fixes gh-3139
Closes gh-3140
2016-06-02 20:56:47 -04:00
Oleg Gaidarenko
94efb79929 Events: don't execute native stop(Immediate)Propagation from simulation
In Firefox, called `stop(Immediate)Propagation` methods,
in capturing phase prevents receiving focus

Fixes gh-3111
2016-05-19 21:56:39 +04:00
Dave Methvin
07c11c03cc Deferred: Give better stack diagnostics on exceptions
Ref gh-2736

The exception stack has the name of the immediately outer function where the
exception occurred, which can be very handy for tracing errors. Since we already
have the exception object we might as well use it.
2016-05-11 20:21:04 -04:00
Dave Methvin
f5958085cf Event: Add touch event properties, eliminates need for a plugin
Fixes gh-3104
Closes gh-3108

See https://github.com/aarongloege/jquery.touchHooks

Other properties are already present thanks to mouse events.

squash! Add targetTouches
2016-05-09 12:23:51 -04:00
Richard Gibson
de71e9755f Deferred: Make jQuery.when synchronous when possible
Closes gh-3102
Fixes gh-3100
Closes gh-3105
2016-05-09 12:14:22 -04:00
Richard Gibson
e8825a529b Event: Cover invalid delegation selector edge cases
Ref 7fd36ea145
2016-05-06 22:12:53 -04:00
Felipe Sateler
7fd36ea145 Event: Evaluate delegate selectors at add time
This ensures that invalid selectors throw right away.

Fixes gh-3071
Closes gh-3097
2016-05-06 22:12:20 -04:00
Dave Methvin
931f45fc38 Event: Remove pageX/pageY fill for event object
Fixes gh-3092
CLoses gh-3106

IE8 was the last major browser missing these.
2016-05-06 15:32:12 -04:00
Jason Bedard
e61fccb9d7 Event: Remove fixHooks, propHooks; switch to ES5 getter with addProp
Fixes gh-3103
Fixes gh-1746
Closes gh-2860

- Removes the copy loop in jQuery.event.fix
- Avoids accessing properties such as client/offset/page/screen X/Y
  which may cause style recalc or layouts
- Simplifies adding property hooks to event object
2016-05-04 15:57:25 -04:00
Richard Gibson
356a3bccb0 Deferred: Separate the two paths in jQuery.when
Single- and no-argument calls act like Promise.resolve.
Multi-argument calls act like Promise.all.

Fixes gh-3029
Closes gh-3059
2016-05-02 12:30:31 -04:00