- Fixed spurious window
blurandfocusoutevents and incorrectevent.relatedTargetvalues when focusing an element after removing the previously focused element, which regressed in v30.1.0. (@asamuzaK) - Fixed focus and blur behavior across frames, and focusing the document's viewport through
document.documentElement.focus(). (@asamuzaK) - Fixed focus targets removed or disabled by
blurlisteners becoming active, and text selections made by focus and blur listeners being overwritten. (@asamuzaK) - Fixed
element.focus()incorrectly focusing disabled form controls and<input type="hidden">elements withtabindex="". (@scttcper) - Fixed invalid
style.setProperty()calls changing existing!importantpriorities, serialized styles, or mutation records. (@FedgeNo) - Fixed
!importanthandling when updating CSS longhands after shorthands, using variables or CSS-wide keywords, and assigning style properties directly. (@FedgeNo) - Fixed
<noscript>parsing withincludeNodeLocations: trueor inside frames to honor therunScriptsoption. - Fixed the
storageQuotaoption being ignored by frames. - Fixed encoding detection of HTML and XML byte input to honor XML encoding declarations and detect UTF-16 without a byte order mark.
- Fixed exceptions caused by truncated
charsetparameters in<meta>elements, and encoding detection incorrectly using incomplete<meta>tags. (@FedgeNo) - Fixed XML serialization errors for namespaces named
constructor,toString,__proto__, or"null", and incorrect reuse of namespace prefixes declared on sibling elements. - Fixed
element.innerHTMLandelement.outerHTMLin XML documents to reject invalid characters in attribute values and avoid stack overflows on large strings. - Fixed selector matching for
:lang(),:nth-child(... of ...)after mutations, and:has()with duplicate IDs or nested logical pseudo-classes. (@asamuzaK)