Hel*_*rld 3 javascript node.js jsdom
我正在尝试从外部访问 jsom 实例内的变量:
下面是一个例子:
<!doctype html>
<html lang="en">
<head>
...
<script>
window.foo = "hello world";
</script>
</head>
....
</html>
Run Code Online (Sandbox Code Playgroud)
然后尝试从“外部”jsdom访问foo变量:
let dom = new JSDOM(...);
dom.window.onload = () => { console.log(dom.window.foo); }; // prints undefined
Run Code Online (Sandbox Code Playgroud)
这个问题似乎描述了一个相同的 GitHub 问题,作者通过删除资源选项解决了这个问题。但是,我不能这样做,因为我需要运行外部脚本。
有什么方法可以调用函数或访问 jsdom 实例中存在的某些变量,并将资源设置为可用?
请参阅文档,其中说:
jsdom最强大的能力就是可以执行jsdom内部的脚本。... 这也是非常危险的 ... 默认情况下禁用执行嵌入在 HTML 中的脚本的能力 ... 要启用在页面内执行脚本,您可以使用该
runScripts: "dangerously"选项
因此:
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!doctype html>
<html lang="en">
<head>
...
<script>
window.foo = "hello world";
</script>
</head>
....
</html>
`, { runScripts: "dangerously", resources: "usable" });
dom.window.onload = () => { console.log(dom.window.foo); };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1988 次 |
| 最近记录: |