8000 Calling global `postMessage` function causes TypeError · Issue #3755 · jsdom/jsdom · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Calling global postMessage function causes TypeError #3755
Closed
@unarist

Description

@unarist

Basic info:

  • Node.js version: v18.20.3
  • jsdom version: 24.1.1

Minimal reproduction case

const { JSDOM, VirtualConsole } = require("jsdom");

const virtualConsole = new VirtualConsole();
virtualConsole.sendTo(console);

const options = {
  runScripts: "dangerously",
  virtualConsole
};
const dom = new JSDOM(`
  <script>
     => console.log(e.data);  
    postMessage("Hello", "*");
  </script>
`, options);

This code should print "Hello" in the console, but cause a TypeError instead:

$ node test.js
/tmp/test/node_modules/jsdom/lib/jsdom/living/helpers/events.js:15
  const event = createAnEvent(e, target._globalObject, eventInterface, attributes);
                                        ^

TypeError: Cannot read properties of undefined (reading '_globalObject')
    at fireAnEvent (/tmp/test/node_modules/jsdom/lib/jsdom/living/helpers/events.js:15:41)
    at Timeout._onTimeout (/tmp/test/node_modules/jsdom/lib/jsdom/living/post-message.js:36:7)
    at listOnTimeout (node:internal/timers:569:17)
    at process.processTimers (node:internal/timers:512:7)

It works if I change postMessage to window.postMessage:

$ node test.js
Hello

How does similar code behave in browsers?

Prints "Hello" in the console without any errors.

https://jsbin.com/qalewadido/edit?html,console,output

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0