javascript - JSDOM - 硬核方式 - 添加外部脚本并使用它

标签 javascript node.js dom jsdom

我开始使用 JSDOM,并且它可以正常工作:

jsdom.env(
'<p><a class="the-link" href="https://github.com/tmpvar/jsdom">jsdom\'s Homepage</a></p>',
["http://127.0.0.1:8080/js/test.js"],
function (errors, window) {
    //console.log("contents of a.the-link:", window.$("a.the-link").text());
    console.log(errors);
    console.log(window.myVar);
    console.log(window.test);

});

Test.js 脚本非常简单:

console.log("testing testing testing");
window.myVar = "myVar Content";
var test = "test content";

执行脚本时会显示myVar和test的内容。

但问题是当我开始以硬核方式进行时(硬核如文档所述):

我执行以下操作:

var jsdom = require("jsdom").jsdom;
var document = jsdom("<html><head></head><body>hello world</body></html>");
var window = document.parentWindow;

var script =  document.createElement("SCRIPT");
script.src = "http://127.0.0.1:8080/js/test.js";
var head= window.document.getElementsByTagName('head')[0];
head.appendChild(script);
var window = document.parentWindow;

console.log("myVar Content: " + window.myVar);

在这种情况下,window.myVar 是未定义的。

我错过了什么?

谢谢。

最佳答案

我找到了方法:

var jsdom = require("jsdom").jsdom;
var document = jsdom("<html><head></head><body>hello world</body></html>");
var window = document.parentWindow;

var script =  document.createElement("script");
script.type = "text/javascript";
var fs = require("fs");
var requireJSFile = fs.readFileSync("test.js","utf8");
    script.innerHTML = requireJSFile;
var head= window.document.getElementsByTagName('head')[0];
head.appendChild(script);
var window = document.parentWindow;

console.log(document.innerHTML);
console.log("myVar Content: " + window.myVar);

我将在 var 中添加一个函数,然后看看是否可以将其用作:window.myVar(param1, param2, param3)。

我很确定它会起作用。

关于javascript - JSDOM - 硬核方式 - 添加外部脚本并使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19490572/

相关文章:

node.js - 填充 Mongoose 的所有领域?

html - 唯一标识 DOM 节点的最佳方法是什么?

javascript - JavaScript 中的 ' and "有什么区别?

javascript - 在 Canvas 上创建弹跳框动画

node.js - Socket.io 通过 XHR-Polling 不传递 cookie

angular - 如何获取 angular2 组件的父 DOM 元素引用

javascript - 在javascript dom中,是否有tagName到HTMLElement的映射?

javascript - 如何使用 WebStorm 在 TypeScript 而不是 JavaScript 中创建 Cucumber 步骤定义文件?

javascript - 将数据属性值插入 Iframe src

带有 async/await 的 JavaScript 数组过滤器