下面的代码只是我的server.js文件中的一小段,只是为了运行jsdom文档提供的测试。
var window = jsdom.jsdom().createWindow();
jsdom.jQueryify(window, './jq.min.js' , function() {
console.log('inside');
window.$('body').append('<div class="testing">Hello World, It works</div>');
console.log(window.$('.testing').text());
console.log('end');
});
我从字面上得到的输出只是inside
,然后服务器挂起并且永远不会返回。我添加了一个调试语句console.log(window);
来查看窗口对象是否真正被创建,并且我最终得到一个相当大的输出语句,详细说明了对象的内容。但我注意到的一件事是输出不表明$
是window
对象的已定义方法,实际上console.log(window.$);
呈现{{ 1}}。
我理解jsdom仍处于开发模式,但是我在这里缺少一些东西吗?
正如一些背景知识一样,我尝试了几种代码变体,包括使用undefined
方法以及从现有HTML标记构建文档,这些文档都没有呈现预期结果。
答案 0 :(得分:-1)
我希望此代码段可以帮助您:
createWindow = function(fn) {
var window = jsdom.jsdom().createWindow(),
script = window.document.createElement('script');
jsdom.jQueryify(window, function() {
script.src = 'file://' + __dirname + '/some.library.js';
script.onload = function() {
if (this.readyState === 'complete') {
fn(window);
}
}
});
}
createWindow(function(window) {
// Do your jQuery stuff:
window.$('body').hide();
});