-
-
Notifications
You must be signed in to change notification settings - Fork 207
Virtual Machine Context
David Ortner edited this page Sep 6, 2023
·
4 revisions
The default Window
class is a NodeJS VM context. A VM context will execute JavaScript sandboxed within the context. The Window instance will be the global object within the VM context.
import { Window } from 'happy-dom';
const window = new Window({
innerWidth: 1024,
innerHeight: 768,
url: 'http://localhost:8080'
});
const document = window.document;
document.write(`
<html>
<head>
<title>Test page</title>
</head>
<body>
<div class="container">
<!–– Content will be added here -->
</div>
<script>
const element = document.createElement('div');
const container = document.querySelector('.container');
element.innerHTML = 'Test';
container.appendChild(element);
</script>
</body>
</html>
`);
// Will output "Test"
console.log(document.querySelector('.container div').innerHTML);
Happy DOM exports a class called GlobalWindow
, which can be used to run Happy DOM in the global context instead of the default behaviour of running in a VM context.
import { Window, GlobalWindow } from 'happy-dom';
const vmWindow = new Window();
const globalWindow = new GlobalWindow();
// Will output "false"
console.log(vmWindow.Array === global.Array);
// Will output "true"
console.log(globalWindow.Array === global.Array);
globalWindow.eval('global.test = 1');
// Will output "1"
console.log(global.test);