javascript - nodejs + jsdom,jQuery 奇怪的行为

标签 javascript jquery node.js serverside-javascript jsdom

下面的代码只是我的 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 对象是否真的被创建了,我最终得到了一个相当大的输出语句,详细说明了对象的内容。然而,我确实注意到的一件事是,输出确实表明$window 对象的定义方法,事实上,console.log(window.$); 呈现 undefined

我知道 jsdom 仍处于开发模式,但我在这里遗漏了什么吗?

作为一些背景,我尝试了几种代码变体,包括使用 jsdom.env() 方法以及从现有的 HTML 标记构建文档,但都没有呈现预期结果。

最佳答案

希望这段代码对您有所帮助:

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();
});

from here

关于javascript - nodejs + jsdom,jQuery 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5815418/

相关文章:

javascript - 我如何解析 json 值并将 id 放入变量中

javascript - 如何随机淡入 LI 元素? (jquery)

javascript - util继承于node

javascript - PDF.JS 在客户端预览从服务器端发送的大型 pdf 文件(> 200MB)

javascript - 我怎样才能退出循环?

javascript - 访问谷歌可视化表中的某个单元格

jquery - 如何创建一个返回 bool 值的 jQuery 函数?

node.js - ffmpeg jpeg 流到 webm 仅创建具有 1 帧(快照)或空 .webm 文件(mjpeg)的文件 .webm

c# - 如何禁用 C# 中的 div 代码?

javascript - 滚动条隐藏在 rails 4 中