## 9.12.0 * Added the `Option` named constructor. (NAlexPear) * Added support for the `canvas-prebuilt` npm package as an alternative to `canvas`. * Fixed `setTimeout()` and `setInterval()` to always return a positive integer, instead of returning `0` the first time were called. (yefremov) * Fixed `jsdom.env()` to preserve URL fragments across redirects. (josephfrazier) * Fixed `optionEl.text` and `optionEl.value` to be more spec-compliant. * Fixed `event.stopImmediatePropagation()` to actually stop immediate propagation, not just propagation. * Fixed `clearTimeout()` and `clearInterval()` to work correctly when using jsdom browserified. ## 9.11.0 * Added dummy properties `offsetTop`, `offsetLeft`, `offsetWidth`, and `offsetHeight` that always return `0`, and `offsetParent` which always returns `null`, for all HTML elements. (yefremov) * Fixed various edge cases in our type conversions applied to method arguments and setters throughout the web platform APIs implemented by jsdom. ## 9.10.0 * Added `forEach`, `keys`, `values`, and `entries` methods to `NodeList`. * Added `event.cancelBubble`. * Added dummy properties `scrollWidth`, `scrollHeight`, `clientTop`, `clientLeft`, `clientWidth`, and `clientHeight` that always return `0` to all elements. (alistairjcbrown) * Updated many aspects of `Blob`, `File`, and `FileReader` to better match the File API specification. (TimothyGu) * Fixed the progress and readystatechange events fired by `XMLHttpRequest` to match recent specification changes and test updates. * Fixed `element.getClientRects()` to return an empty array, instead of an array containing a dummy bounding box. (alistairjcbrown) * Changed `navigator.vendor` to return `"Apple Computer, Inc."` instead of `"Google Inc."`, since we have chosen the WebKit [navigator compatibility mode](https://html.spec.whatwg.org/multipage/webappapis.html#concept-navigator-compatibility-mode). ## 9.9.1 * Removed the use of `array.includes` to fix a compatibility issue with Node.js v4. ## 9.9.0 * Added `CDATASection` nodes, including `document.createCDATASection`. (snuggs) * Added `node.wholeText`. (jdanyow) * Added a setter for `document.body`. * Added `document.embeds`, `document.plugsin`, and `document.scripts`. These were supposed to be added in 9.5.0 but were mistakenly omitted. * Fixed `element.insertAdjacentHTML` to work when the element has null or the document as its parent node, as long as the insertion position is `"afterbegin"` or `"beforeend"`. * Fixed form submission to only hit the "not implemented" virtual console message when form submission is _not_ canceled, instead of when it is. * Fixed an issue where the event listener was not being correctly removed when using the `{ once: true }` option to `addEventListener`. (i8-pi) * Fixed an error that was thrown when using `XHTMLHttpRequest` and POSTing JSON contents to an endpoint that requires CORS while using an `Authorization` header. (dunnock) * Fixed `document.body` and `document.title` to act more correctly in various edge cases. * Fixed `HTMLCollection` named access to return the first element encountered, not the last. ## 9.8.3 * Fixed syntax errors in Node.js v4. ## 9.8.2 * Fixed `DOMTokenList` and `getElementsByClassName` to only split on ASCII whitespace, not all Unicode whitespace. ## 9.8.1 * Fixed an error that occurred when passing no class names to `getElementsByClassName`, e.g. `getElementsByClassName("")` or `getElementsByClassName(" ")`. ## 9.8.0 * Added the `blob.isClosed` property. (TimothyGu) * Fixed the `file.lastModified` property to be on `File` instead of on `Blob`. (TimothyGu) * Fixed the `file.lastModified` property to default to the time of the `File` object's creation, not the time that the property is accessed. (TimothyGu) * Fixed a minor edge-case regression where non-HTML elements with the name `"iframe"` became focusable in 9.7.0. ## 9.7.1 * Fixed a performance regression introduced in 9.5.0 for modifying the DOM. It was particularly noticable during initial parsing of a document with many elements; for example, one test showed parsing ten thousand elements taking 36.4 seconds, whereas after this fix it is back to a more reasonable 0.4 seconds. ## 9.7.0 * Added `EventListenerOptions` support to `addEventListener` and `removeEventListener`, including both the `once` and `capture` options. (GianlucaGuarini) * Added `document.hasFocus()` (acusti) * Fixed the focus management to ensure that focusing something inside an `iframe` will also focus the `iframe` itself. (acusti) ## 9.6.0 * Added `HTMLCollection.prototype[Symbol.iterator]`, so you can use `for`-`of` loops over `HTMLCollection`s now. (i8-pi) * Fixed `file.lastModified` to return the current time as the default, instead of `0`. * Fixed cloning of `Attr`s to properly clone the namespace prefix. * Tweaked `XMLHttpRequest` progress event ordering slightly to better match the spec and browsers. * Tweaked the behavior of calling `event.stopPropagation` and `event.stopImmediatePropagation` on already-dispatched events, per [the latest changes to the DOM Standard](https://github.com/whatwg/dom/commit/806d4aab584f6fc38c21f8e088b51b8ba3e27e20). ## 9.5.0 * Added `document.scripts`, `document.embeds`, and `document.plugins`. * Fixed `document.getElementsByTagName` and `document.getElementsByTagNameNS` to return `HTMLCollection`s instead of `NodeList`s, and to follow the spec algorithms more exactly. * Fixed various `HTMLCollection`-returning getters such as `document.applets` or `table.cells` to be more spec-compliant. * Fixed the resource loader to respect the `agent` and `agentClass` options, not just the `agentOptions` one. * Fixed `console.groupCollapse` to be `console.groupCollapsed` (and changed the virtual console accordingly). ## 9.4.5 * Fixed `"error"` events from failed resource loads going missing since 9.4.3. I really should have tested that release better. ## 9.4.4 * Fixed a leftover `console.log` introduced in the error handling path in 9.4.3. ## 9.4.3 * Fixed spurious `"jsdomError"`s occuring when closing a window, due to aborted resource loads. ## 9.4.2 * Fixed what would happen when inline event handlers (such as `element.onclick`) would return non-boolean values (such as `undefined`); it would previously erroneously cancel the event, in many cases. (dmethvin) * Upgraded the minimum tough-cookie version to ensure all installations are protected against [a security advisory](https://nodesecurity.io/advisories/130). ## 9.4.1 * Implemented the cloning steps for `` elements, so that cloned inputs properly copy over their value, checkedness, dirty value flag, and dirty checkedness flag. (matthewp) ## 9.4.0 * Added the `DOMParser` API. It is spec-compliant, including producing `` elements, except that the produced documents do not have the same URL as the creating document (they instead always have `"about:blank"`). * Added strict XML parsing when using `parsingMode: "xml"`. Creating documents will now fail, just like in a browser, when ill-formed XHTML markup is used. * Added some rudimentary application of XML ``. * Updated `FormData` for [recent spec fixes](https://github.com/whatwg/xhr/commit/1a75845e67792418a7721d516266ad01a90f2062): blobs, files, and filenames should now all work like you'd expect. * Updated the `FormData` constructor to use the proper, rather-complex, [constructing the form data set](https://html.spec.whatwg.org/multipage/forms.html#constructing-form-data-set) algorithm. * Fixed all constructors that appears as globals on the jsdom `window` object to be non-enumerable. * Fixed `