2010-11-21 27 views
0

这就是我想要的那一刻做一个片段:是否可以加载应用于node.js中DOM的CSS样式表?

var sys  = require("sys"), 
    request = require("request"), 
    $  = require("jquery"), 
    uri  = 'http://' + process.argv[2]; 

request({uri:uri}, function (error, response, context) { 
    if (!error && response.statusCode == 200) { 
    console.log($('body', context).css('background')); 
    } 
}) 

显然,这只是返回undefined;有没有办法应用链接元素中定义的样式表,以便我可以用jQuery查询它们?

+0

因此,你想要解析该URI的内容并生成一个DOM,并解析和解释CSS,所有在服务器端node.js ...听起来像你需要以某种方式与WebKit集成,因为什么你需要的是一个浏览器。 – Pointy 2010-11-21 14:14:03

+0

嗯,我已经解释了DOM,因此我可以选择元素并获取它们的相关属性和值 - 除了内联样式,我无法获得任何样式。 – Steve 2010-11-21 14:19:23

回答

3

由于Pointy已经指出 out(scnr)这绝不是微不足道的。

您需要:

  1. 解析CSS
  2. 应用规则到DOM
  3. 计算基于现有规则中的风格

基本上你需要一个浏览器渲染引擎如果没有实际的绘图,那么将需要很多的JavaScript代码(如果幸运的话,50k LOC +),你需要实现所有的CSS版本,che ck文档类型等

现在,人们可以做的最好的事情就是从WebKit中抓取那些东西,并将其与V8绑定以获得Node C扩展。一份相当大的工作,所以除非你愿意独自开始这个工作,否则我想你倒霉了。如果绑定这些东西需要付出很大的努力,但是从头开始在JS中编写整个东西(即使目前JavaScript性能有所提高,速度会非常慢),仍然会花费更少的时间。

+0

够公平的,正如你所说我认为我不幸运 - 我试图做的是推动出于范围考虑这一点。再次感谢伊沃! – Steve 2010-11-21 15:46:15

+0

联合国粮农组织其他任何想要这个功能的人,虽然它不是相同的,但我最终选择了拉取样式表,并使用正则表达式来提取我需要的位。 CSS很容易预测,所以我可以以足够的准确度获得所需的数据。代码示例:http://logo.stevelacey.net – Steve 2010-11-24 21:47:38

0

虽然不是Node.js,但现在可以通过PhantomJS来实现。

相关问题