用jsdom获取当前的浏览器DOM?

时间:2012-04-28 10:30:39

标签: node.js dom jsdom

是否可以使用jsdom获取网站的更改/实时DOM?

例如:

客户端

在我的test.html文件中,我有一个按钮,它会添加新的<div class="p">元素:

$('#button').click(function(){
 $('body').append('<div class="p">new</div>');
});

然后我有另一个按钮调用服务器上的一个函数(使用NowJS或Socket.IO)。


服务器

现在,在我的server.js文件中,我想要使用div计算所有附加的class="p"元素:

everyone.now.countDiv = function() {
    var jquery = fs.readFileSync("./jquery16.js").toString();

    jsdom.env(
      {
        html: 'http://localhost:8080/test.html',
        src: [
          jquery
      ],
      done: function(errors, window) {
        var $ = window.$;
        var len = window.$('.p').length;
        console.log("Divs: ", len);
      }
    });
}

我知道我可以计算客户端上的元素并将其传递给服务器。但我感兴趣的是jsdom是否可以访问“新/当前”DOM。

我假设jsdom读取text.html的DOM,但无法访问网站的实时DOM!?

2 个答案:

答案 0 :(得分:2)

即使jsdom允许您修改模板的DOM,它仍然保留在服务器端。

服务器端与客户端DOM无关,或者您称之为“实时DOM”。

答案 1 :(得分:0)

您可能需要查看NowJS - http://nowjs.com/和Socket.io - http://socket.io/(包含在NowJS中)。

NowJS允许您从服务器到客户端共享功能和数据,反之亦然。