All Versions
Latest Version
Avg Release Cycle
36 days
Latest Release

Changelog History
Page 9

  • v8.1.1 Changes

    • 🛠 Fixed input selection methods and properties to properly differentiate between inputs that can be selected outright vs. textual inputs which allow variable-length selection. (yaycmyk)
  • v8.1.0 Changes

    • ➕ Added attr.nodeName, which was recently re-added to the spec.
    • ➕ Added click-proxying behavior from <label>s to their labeled form elements. (yaycmyk)
    • ➕ Added a setter for element.classList per recent spec changes (it forwards to element.classList.value).
    • ⚡️ Updated our attributes implementation in a few ways for recent spec changes and to fix discovered bugs:
      • Added element.getAttributeNames(). (spec addition)
      • setAttributeNode and setAttributeNodeNS can now replace an attribute node, instead of removing the old one and adding a new one; this avoids changing the order in the attribute list. (spec change)
      • NamedNodeMap named properties are now lowercase (except in edge cases involving XML documents or non-HTML elements). (spec change)
      • NamedNodeMap named properties are now non-enumerable.
      • The "DOMAttrModified" mutation event's relatedNode is now the new Attr object, not the Node, as per spec.
    • ⚡️ Updated DOMTokenList to have a value property per recent spec changes; its toString serialization also changed slightly.
    • ⚡️ Updated tc.headers to be a DOMTokenList that simply reflects the headers attribute; previously it was a string, with its computation doing some weird stuff.
    • 🛠 Fixed document.implementation.createDocument() to create a document with its parsing mode set to XML, which affects a variety of DOM APIs in small ways.
    • 🛠 Fixed EventTarget.prototype.constructor to be correct; it was previously Window.
    • 🛠 Fixed option.index for <option>s not inside a <select> to no longer error.
    • 🛠 Fixed tc.cellIndex for <td>s and <th>s not inside a <tr> to no longer error.
    • 🛠 Fixed tr.sectionRowIndex for <tr>s not inside a <table>, <tbody>, <thead>, or <tfoot> to no longer error.
    • ✂ Removed the "keyevents" alias for "keyboardevent" when using document.createEvent, per recent spec changes.
  • v8.0.4 Changes

    • 🛠 Fixed the this value when you pass a { handleEvent() { ... } } object to addEventListener. (thetalecrafter)
  • v8.0.3 Changes

    • 🛠 Fixed HTMLOptionElement.prototype.label; a typo was causing it to not work at all. (karlhorky)
    • 💅 Updated cssstyle minimum version to ensure all jsdom installs (not just fresh ones) get the benefit of cssstyle's recently-better padding and margin parsing/CSSOM.
  • v8.0.2 Changes

    • 🛠 Fixed an issue where custom user agents would not propagate to navigator.userAgent in frames and iframes.
    • 👌 Improved our document.activeElement implementation to be a bit smarter; we still don't have full focus/blur/active element semantics, but at least now it falls back to the <body> element when the active element is removed from the document or when no element has been focused yet.
  • v8.0.1 Changes

    • 🛠 Fixed an issue where the this inside event handler callbacks was not equal to the event's current target. (Surprisingly there were no tests for this!)
  • v8.0.0 Changes

    🚀 This major release includes a large rewrite of most of the DOM and HTML classes exposed in jsdom. A lot of their behavior is generated from their specs' IDL syntax, taking care of many type conversions, attribute/property reflections, and much more. Many properties that were previously not present are now available, and almost everything behaves in a more spec-compliant way. Additionally, for these classes all of their implementation details are no longer available as underscore-prefixed properties, but instead are hidden behind a single symbol.

    🚀 Although normally jsdom does not mark a new major release for changes that simply update us to the latest specs or hide internal implementation details better, the magnitude of the changes is so extensive that we want to bump the major version in order to ensure that consumers perform adequate testing before upgrading. But, you should definitely upgrade! The new stuff is really awesome!

    • 📦 Reimplemented Location, History, and HTMLHyperlinkElementUtils (used by both HTMLAnchorElement and HTMLAreaElement) according to the latest specs, and using the latest whatwg-url package. This greatly improves our correctness on URL resolution and navigation (to the extent we support navigation, i.e. pushState and changing the hash). It should also improve parsing speed as we no longer parse and resolve URLs during parsing.
    • ➕ Added Element.prototype.insertAdjacentHTML. (kasperisager)
    • ➕ Added Node.prototype.adoptNode, and adopt nodes during insertion instead of throwing "WrongDocumentError"s. (dmethvin)
    • ➕ Added a stub Element.prototype.getClientRects to match our stub getBoundingClientRect.
    • 🛠 Fixed setTimeout and setInterval to return numeric IDs, instead of objects. (alvarorahul)
    • 🛠 Fixed setTimeout and setInterval to accept string arguments to eval, and to pass along extra arguments after the first two.
    • 🛠 Fixed certain style shorthand properties not updating their component properties or parsing correctly. (dpvc)
    • 🛠 Fixed Event object creation to always initialize the event objects, unless using document.createEvent, even for events with name "".
    • 🛠 Fixed iframes to go through the custom resource loader. (chrmarti)
    • ✂ Removed "DOM Load and Save" stub implementation. That spec was never implemented in browsers, and jsdom only contained stubs.
    • ✂ Removed other minor unimplemented, stub, or no-longer-standard APIs from "DOM Level 3", like the user-data API, DOMError, DOMConfiguration, and DOMStringList.
  • v7.2.2 Changes

    • 🛠 Fixed canvasEl.toDataURL(), with the canvas npm package installed; a recent update to the canvas package broke how we were passing arguments to do.
    • 🛠 Fixed data: URL parsing to allow empty contents, e.g. data:text/css;base64,. (sebmck)
  • v7.2.1 Changes

    • 🛠 Fixed a regression in XML parsing of attributes with a namespace URL but no prefix (e.g. <math xmlns="">).
  • v7.2.0 Changes

    • ➕ Added support for text selection APIs on <input> and <textarea>! (sjelin and yaycmyk)
    • 📦 Replaced our default XML parser with sax, thus fixing many (but not all) issues with XML and XHTML parsing. To get a flavor of the issues fixed, check out these now-closed bugs: #393, #651, #415, #1276.
    • 🛠 Fixed the <canvas> tag to reset its contents when its width or height changed, including the change from the default 300 × 150 canvas. (Applies only when using the canvas npm package.)
    • 🛠 Fixed an issue where HTMLCollections would get confused when they contained elements with numeric ids or names.
    • 🛠 Fixed an issue with doctype parsing confusing the system ID and public ID.
    • 🤡 Made the task posted by postMessage use the inside-jsdom timer queue, instead of the Node.js one. This allows easier mocking. (cpojer)