From 59f7b55bf6dad71eee6434116566356d597f1d90 Mon Sep 17 00:00:00 2001 From: Michał Gołębiowski-Owczarek Date: Mon, 27 Mar 2023 21:24:42 +0200 Subject: Event: Simulate focus/blur in IE via focusin/focusout (3.x version) In IE (all versions), `focus` & `blur` handlers are fired asynchronously but `focusin` & `focusout` are run synchronously. In other browsers, all those handlers are fired synchronously. Asynchronous behavior of these handlers in IE caused issues for IE (gh-4856, gh-4859). We now simulate `focus` via `focusin` & `blur` via `focusout` in IE to avoid these issues. This also let us simplify some tests. This commit also simplifies `leverageNative` - with IE now using `focusin` to simulate `focus` and `focusout` to simulate `blur`, we don't have to deal with async events in `leverageNative`. This also fixes broken `focus` triggers after first triggering it on a hidden element - previously, `leverageNative` assumed that the native `focus` handler not firing after calling the native `focus` method meant it would be handled later, asynchronously, which was not the case (gh-4950). To preserve relative `focusin`/`focus` & `focusout`/`blur` event order guaranteed on the 3.x branch, attach a single handler for both events in IE. A side effect of this is that to reduce size the `event/focusin` module no longer exists and it's impossible to disable the `focusin` patch in modern browsers via the jQuery custom build system. Fixes gh-4856 Fixes gh-4859 Fixes gh-4950 Ref gh-5223 Closes gh-5224 Co-authored-by: Richard Gibson --- README.md | 1 - 1 file changed, 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 84e24b7e9..53c94df55 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,6 @@ Some example modules that can be excluded are: - **dimensions**: The `.width()` and `.height()` methods, including `inner-` and `outer-` variations. - **effects**: The `.animate()` method and its shorthands such as `.slideUp()` or `.hide("slow")`. - **event**: The `.on()` and `.off()` methods and all event functionality. -- **event/focusin**: Cross-browser support for the focusin and focusout events. - **event/trigger**: The `.trigger()` and `.triggerHandler()` methods. - **offset**: The `.offset()`, `.position()`, `.offsetParent()`, `.scrollLeft()`, and `.scrollTop()` methods. - **wrap**: The `.wrap()`, `.wrapAll()`, `.wrapInner()`, and `.unwrap()` methods. -- cgit v1.2.3