2010-11-21 7 views
0

これは私が現時点で何をしようとしているの抜粋です:DOMに適用されたCSSスタイルシートをnode.jsに読み込むことはできますか?

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

+0

私はすでにDOMを解釈しているので、要素を選択して相対属性と値を取得できます。インラインスタイル以外のスタイルを取得することはできません。 – Steve

答えて

3

すでにPointyとしてが指摘されています out(scnr)これは決して簡単なことではありません。基本的に

あなたはレンダリングエンジンブラウザが必要

  1. DOM
  2. 計算ルールに基づいて、現在のスタイルにルールを適用するCSSを解析:

    あなたがする必要が実際の描画がなければ、JavaScriptのコードの多くは(50k LOC + 1人が運が良ければ)です。すべてのCSSバージョンcheを実装する必要がありますドキュメントタイプなどを指定してください。

    今のところ、WebKitからその物を掴み、ノードC拡張のためにV8にバインドするのが最も良い方法です。かなり巨大な仕事なので、あなた自身でこれを始めるつもりがなければ、あなたは運がないと思う。

    これをバインドするにはかなりの労力がかかりますが、それでもJS全体を一から書き込む時間がかかります(現在のJavaScriptのパフォーマンスが向上しているにもかかわらず、ひどく遅くなります)。

+0

あなたが言ったように、私は運がないと思っています。私がやろうとしていることは、これを考慮して範囲外に押し出されています。アイオワにもう一度感謝します! – Steve

+0

FAO誰もがこの機能を望んでいるが、決して同じではないが、私はスタイルシートを引っ張って正規表現を使って必要なビットを引き出すことにした。 CSSはかなり簡単に予測できるので、必要なデータを適切なレベルで得ることができます。コード例:http://logo.stevelacey.net – Steve

0

Node.jsではなく、PhantomJSでこれが可能になります。

関連する問題