2010-11-21 3 views
0

이것은 내가 지금 할 노력하고있어의 조각입니다 : 이것은 단지 undefined를 반환 분명히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')); 
    } 
}) 

; 링크 요소에 정의 된 스타일 시트를 적용하여 jQuery로 쿼리 할 수있는 방법이 있습니까?

+0

그래서 URI의 내용을 구문 분석하고 DOM을 생성하고 CSS를 구문 분석하고 서버 측 node.js의 모든 것을 해석하기를 원한다. WebKit과 어떻게 든 통합해야하는 것처럼 들린다. 당신은 브라우저가 필요합니다. – Pointy

+0

글쎄, DOM을 이미 해석 했으므로 엘리먼트를 선택하고 상대적인 속성과 값을 얻을 수 있습니다. 인라인 스타일 이외의 스타일링은 얻을 수 없습니다. – Steve

답변

3

이미 뾰족한 것으로서 (scnr)을 가리키며 결코 쉬운 일이 아닙니다. 기본적으로

당신이 렌더링 엔진 브라우저가 필요

  1. DOM을
  2. 계산 규칙에 따라 현재 스타일에 규칙을 적용하려면 CSS를 구문 분석 :

    당신이 필요 실제 그리기가 없다면, 많은 코드가 자바 스크립트에서 코드의 (50k LOC + 운이 좋다면)이 걸릴 것이다. 모든 CSS 버전을 구현해야한다. ck 문서 유형 등.

    지금 당장 할 수있는 최선의 방법은 WebKit에서 해당 항목을 가져 와서 노드 C 확장을 위해 V8으로 바인딩하는 것입니다. 꽤 큰 일이기 때문에, 스스로 시작하지 않으면 운이 없어졌습니다.

    일을 바인딩하는 데는 많은 시간이 걸리지 만 JS에서 모든 일을 처음부터 작성하는 데 시간이 오래 걸릴 것입니다 (현재 자바 스크립트 성능이 향상 되어도 끔찍할 것입니다).

+0

당신이 말했듯이, 내가 운이 없다고 생각 했으니까요. 내가하려는 일은이 점을 고려하여 범위를 벗어났습니다. 다시 한번 감사드립니다. – Steve

+0

FAO 다른 사람들이이 기능을 원한다면 절대로 동일한 것은 아니지만 스타일 시트를 가져 와서 정규 표현식을 사용하여 필요한 비트를 추출하도록 선택했습니다. CSS는 예측하기가 쉽기 때문에 필요한 데이터를 적절한 수준으로 얻을 수 있습니다. 코드 예제 : http://logo.stevelacey.net – Steve

0

Node.js는 아니지만 PhantomJS을 통해 가능할 것으로 보입니다.

관련 문제