更改 JSDom 文档中的全局变量

Change global var inside a JSDom document

我正在尝试创建一个包含全局变量的 JSDom 文档,然后尝试以编程方式更改它的值,然后再次打印输出。

我的代码如下:

    const { JSDOM } = require('jsdom');

    const dom = new JSDOM(`
        <!DOCTYPE html>
        <html lang="en">
        <meta charset="UTF-8">
        <body>
            <script>
                var myGlobalVar = 'foo';
            </script>
        </body>
        </html>`,
        { runScripts: 'dangerously' });

    dom.window.myGlobalVar = 'bar';

    console.log(dom.serialize())

我希望输出是相同的文档,但 myGlobalVar 的值更新为 "bar"。这并没有发生,myGlobalVar 仍然是 "foo"

有谁知道我做错了什么以及我想要的是否可行?

在此先感谢您的帮助。

dom.window.myGlobarVar = “bar” 在 window 对象上设置一个 属性 它不会更改您提供给 JSDom 构造函数的 DOM 的内容。如果你 console.log(dom.window.myGlobalVar),你应该看到输出为 bar