jsdom v11.2.0 Release Notes

  • ๐Ÿš€ 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 NodeList and HTMLCollection, such that retrieving properties via indices or (in HTMLCollection's case) id/name values will always work correctly.
    • โž• Added element.dataset support.
    • โž• Added indexed and named access to <select> elements, as well as the corresponding item() and namedItem() methods.
    • โž• Added suport for FileList indexed properties, i.e. fileList[i].
    • Made select.options an instance of the newly-implemented HTMLOptionsCollection, instead of just a HTMLCollection.

    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(), and window.external.IsSearchProviderInstalled(). (Zirro)
    • โž• Added active checks to prevent reentrancy in TreeWalker and NodeIterator.
    • โšก๏ธ Updated the interaction between a <textarea>'s value, defaultValue, and textContent per a recent spec change
    • ๐Ÿ›  Fixed elements with id="undefined" shadowing the undefined property of the global object. (TimothyGu)
    • ๐Ÿ›  Fixed matching in getElementsByClassName() to be ASCII case-insensitive, instead of using JavaScript's toLowerCase().
    • ๐Ÿ‘Œ Improved some behaviors around navigating to fragments. (ForbesLindesay)
    • ๐Ÿ‘Œ Improved XMLHttpRequest and FileReader behavior, mainly around event handlers, abort(), and network errors.
    • ๐Ÿ‘Œ Improved edge-case spec compliance of NodeIterator.