JavaScript覆盖DOM文档以在Node.JS环境中使用



我正在开发一个库,该库使用Emscripten将C++代码编译到WebAssembly中。

我想让相同的库在headless/nodejs环境中工作。使用JSDom,我可以在类似的node.js中创建文档

import { JSDOM } from "jsdom";
const jsdom = new JSDOM(`<!DOCTYPE html><body></body>`);
console.log("Dom is initialised? " + jsdom !== undefined);
console.log("Document " + jsdom.window.document);

现在我可以在我的JavaScript代码中引用CCD_ 1了。

但是,WebAssembly/emscripten直接调用document.xxx

是否有任何方法可以覆盖JavaScriptdocument变量,以便任何调用document.xxx的代码都能获得新变量?

事实证明,对于任何需要它的人来说,这个答案都非常简单

您可以用以下代码覆盖全局文档和窗口变量:

const dom = new JSDOM(`<!DOCTYPE html><body></div></body>`);
(global as any).window = dom.window;
(global as any).document = dom.window.document;
console.log("Dom is initialised? " + window !== undefined);
console.log("Document " + document);

最新更新