JSDom没有将文本作为脚本运行

时间:2015-03-06 22:02:50

标签: javascript node.js jsdom

根据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”。我做错了什么?

1 个答案:

答案 0 :(得分:2)

尝试观察&#34;错误&#34;中的内容。宾语。来自文档:如果窗口创建成功并且没有导致错误,则错误将为null,窗口将可用。

你的问题可能会在那里揭晓。 =)