# jsdom Changelog ## 16.4.0 * Added a not-implemented warning if you try to use the second pseudo-element argument to `getComputedStyle()`, unless you pass a `::part` or `::slotted` pseudo-element, in which case we throw an error per the spec. (ExE-Boss) * Improved the performance of repeated access to `el.tagName`, which also indirectly improves performance of selector matching and style computation. (eps1lon) * Fixed `form.elements` to respect the `form=""` attribute, so that it can contain non-descendant form controls. (ccwebdesign) * Fixed `el.focus()` to do nothing on disconnected elements. (eps1lon) * Fixed `el.focus()` to work on SVG elements. (zjffun) * Fixed removing the currently-focused element to move focus to the `` element. (eps1lon) * Fixed `imgEl.complete` to return true for `` elements with empty or unset `src=""` attributes. (strager) * Fixed `imgEl.complete` to return true if an error occurs loading the ``, when canvas is enabled. (strager) * Fixed `imgEl.complete` to return false if the `` element's `src=""` attribute is reset. (strager) * Fixed the `valueMissing` validation check for ``. (zjffun) * Fixed `translate=""` and `draggable=""` attribute processing to use ASCII case-insensitivity, instead of Unicode case-insensitivity. (zjffun) ## 16.3.0 * Added firing of `focusin` and `focusout` when using `el.focus()` and `el.blur()`. (trueadm) * Fixed elements with the `contenteditable=""` attribute to be considered as focusable. (jamieliu386) * Fixed `window.NodeFilter` to be per-`Window`, instead of shared across all `Window`s. (ExE-Boss) * Fixed edge-case behavior involving use of objects with `handleEvent` properties as event listeners. (ExE-Boss) * Fixed a second failing image load sometimes firing a `load` event instead of an `error` event, when the `canvas` package is installed. (strager) * Fixed drawing an empty canvas into another canvas. (zjffun) ## 16.2.2 * Updated `StyleSheetList` for better spec compliance; notably it no longer inherits from `Array.prototype`. (ExE-Boss) * Fixed `requestAnimationFrame()` from preventing process exit. This likely regressed in v16.1.0. * Fixed `setTimeout()` to no longer leak the closures passed in to it. This likely regressed in v16.1.0. (AviVahl) * Fixed infinite recursion that could occur when calling `click()` on a `