JSDom 不是 运行 文本作为脚本
JSDom Not Running Text as Scripts
根据 JSDom README,您可以传递一个 Javascript 字符串数组来执行,但这个功能似乎对我不起作用。
这是我的节点应用程序:
var fs = require('fs');
var jsdom = require('jsdom-no-contextify');
var scripts = ['manipulate-dom.js'];
var src = scripts.map(function(filename) {
return fs.readFileSync(filename, 'utf8');
});
console.log(src[0]);
jsdom.env({
html: '<div>Hi</div>',
src: src,
done: function(errors, window) {
console.log(window.document.querySelector('div').textContent);
window.doStuff();
console.log(window.document.querySelector('a').textContent);
}
});
这是我的另一个文件:
console.log('Running JS');
function doStuff() {
var a = document.createElement('a');
a.textContent = 'TEXT!';
window.document.body.appendChild(a);
}
window.doStuff = doStuff;
输出结果如下:
console.log('Running JS');
function doStuff() {
var a = document.createElement('a');
a.textContent = 'TEXT!';
window.document.appendChild(a);
}
window.doStuff = doStuff;
Hi
...
window.doStuff();
^
TypeError: Object #<Window> has no method 'doStuff'
它甚至不打印 "Running JS"。我做错了什么?
尝试观察 "errors" 对象中的内容。来自文档:如果 window 创建成功并且没有 s 导致错误,则错误将为空,并且 window 将可用。
你的问题可能会在那里被揭露。 =)
根据 JSDom README,您可以传递一个 Javascript 字符串数组来执行,但这个功能似乎对我不起作用。
这是我的节点应用程序:
var fs = require('fs');
var jsdom = require('jsdom-no-contextify');
var scripts = ['manipulate-dom.js'];
var src = scripts.map(function(filename) {
return fs.readFileSync(filename, 'utf8');
});
console.log(src[0]);
jsdom.env({
html: '<div>Hi</div>',
src: src,
done: function(errors, window) {
console.log(window.document.querySelector('div').textContent);
window.doStuff();
console.log(window.document.querySelector('a').textContent);
}
});
这是我的另一个文件:
console.log('Running JS');
function doStuff() {
var a = document.createElement('a');
a.textContent = 'TEXT!';
window.document.body.appendChild(a);
}
window.doStuff = doStuff;
输出结果如下:
console.log('Running JS');
function doStuff() {
var a = document.createElement('a');
a.textContent = 'TEXT!';
window.document.appendChild(a);
}
window.doStuff = doStuff;
Hi
...
window.doStuff();
^
TypeError: Object #<Window> has no method 'doStuff'
它甚至不打印 "Running JS"。我做错了什么?
尝试观察 "errors" 对象中的内容。来自文档:如果 window 创建成功并且没有 s 导致错误,则错误将为空,并且 window 将可用。
你的问题可能会在那里被揭露。 =)