Registry / testing / domino-ext

domino-ext

JSON →
library2.1.4jsnpmunverified

Server-side DOM implementation based on Mozilla's dom.js. Stable version 2.1.4, released 2023. Fork of fgnass/domino optimized for minification and SVG CSS attribute support. Designed for building pages rather than scraping, it sticks to DOM Level 4 and does not execute scripts or download external resources. It is faster than jsdom for basic DOM manipulation and does not use ES6 proxies, making it compatible with older Node versions.

npm install domino-ext
INSTALL
IMPORT
SIG · DOMINO-EXT
D
domino-ext
testingjavascriptv2.1.4
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

domino
import domino from 'domino'
const domino = require('domino')
ESM import for default export. CommonJS require works but TypeScript may need esModuleInterop.
createWindow
import { createWindow } from 'domino'
import domino from 'domino'; const createWindow = domino.createWindow;
Named export available since v2. Prefer destructured import for tree-shaking.
createDocument
import { createDocument } from 'domino'
import domino from 'domino'; const createDocument = domino.createDocument;
Same as createWindow but without window object.
impl
import { impl } from 'domino'
const impl = require('domino').impl
Access to internal implementations like Element, etc.

Create a DOM document from an HTML string and query an element using standard DOM API.

import domino from 'domino'; const window = domino.createWindow('<h1>Hello world</h1>', 'http://example.com'); const document = window.document; const h1 = document.querySelector('h1'); console.log(h1.innerHTML); // => Hello world // Alternatively, create document directly const doc = domino.createDocument('<p>Hello</p>', true); console.log(doc.body.outerHTML); // => <body><p>Hello</p></body>
Debug
Known issues
gotchaElement.attributes is not a true JavaScript array; it lacks array methods like forEach, map, etc.
fix
Use Array.from(element.attributes) or for loop with length/item.
affects: >=1.0
gotchaDomino does not execute scripts or load external resources. Dynamic content will not be available.
fix
Pre-render any JavaScript-dependent content server-side or use a headless browser for scraping.
affects: >=1.0
gotchaAttributes do not inherit Node interface per DOM Level 4. Methods like appendChild not available on attributes.
fix
Use standard attribute methods (getAttribute, setAttribute, removeAttribute) instead.
affects: >=1.0
gotchachildNodes is lazily converted to an array; for performance, use firstChild/nextSibling traversal.
fix
Prefer firstChild/nextSibling over childNodes when doing many DOM manipulations.
affects: >=1.0
Errors
Common errors & fixes
TypeError: domino.createWindow is not a function
Using an older version or incorrect import (e.g., default import missing).
fix
Use import domino from 'domino' (ESM) or const domino = require('domino') (CommonJS). Ensure domino version >=2.0.
Cannot find module 'domino'
domino not installed or not in node_modules.
fix
Run npm install domino or yarn add domino.
element.attributes.forEach is not a function
Attributes is an array-like object, not a real array.
fix
Use Array.from(element.attributes).forEach(...) or for (let i = 0; i < element.attributes.length; i++) { ... }
Upgrade
Version history
2.1.4latest on npm
Audit
Dependencies

No dependency data recorded yet.

Agent activity
2 hits · last 30 days
node
2
Resources
domino-ext — npm install domino-ext · libregistry