This release brings with it a much-awaited infrastructure change, as part of webidl2js v7.3.0 by the ever-amazing TimothyGu: jsdom can now generate spec-compliant versions of classes that have "Proxy-like" behavior, i.e. allow getting or setting keys in unusual ways. This enables a number of improvements, also by TimothyGu:
- Significantly improved the spec-compliance and "liveness" of both
NodeListandHTMLCollection, such that retrieving properties via indices or (inHTMLCollection's case)id/namevalues will always work correctly. - Added
element.datasetsupport. - Added indexed and named access to
<select>elements, as well as the correspondingitem()andnamedItem()methods. - Added suport for
FileListindexed properties, i.e.fileList[i]. - Made
select.optionsan instance of the newly-implementedHTMLOptionsCollection, instead of just aHTMLCollection.
This infrastructure will allow us to improve and implement many other similar behaviors; that work is being tracked in #1129.
In addition to these improvements to the object model, we have more work to share:
- Added no-op APIs
document.clear(),document.captureEvents(),document.releaseEvents(),window.external.AddSearchProvider(), andwindow.external.IsSearchProviderInstalled(). (@Zirro) - Added active checks to prevent reentrancy in
TreeWalkerandNodeIterator. - Updated the interaction between a
<textarea>'svalue,defaultValue, andtextContentper a recent spec change - Fixed elements with
id="undefined"shadowing theundefinedproperty of the global object. (@TimothyGu) - Fixed matching in
getElementsByClassName()to be ASCII case-insensitive, instead of using JavaScript'stoLowerCase(). - Improved some behaviors around navigating to fragments. (@ForbesLindesay)
- Improved
XMLHttpRequestandFileReaderbehavior, mainly around event handlers,abort(), and network errors. - Improved edge-case spec compliance of
NodeIterator.