2012-04-25 5 views
7

현재 계산 스타일이 JSDOM을 통해 브라우저에 전송되도록 요구하는 프로젝트를 진행하고 있습니다. 나는 현재 JSDOM에 기본 CSS를 삽입하여 컴퓨터가 올바른 인라인 스타일 (예 : 나쁘다는 것을 알고 있음)을 얻을 수있는 방법을 찾고 있습니다.JSDOM에 대한 광고 스타일 시트는 무엇입니까

에서 나는 JSDOM 레벨 2 사용할 수 있지만, 거기에서 나는이 내가 가진 무엇 스타일 을 주입하는 방법에 대한 문서를 찾을 수 없습니다 발견 한 내용을 지금까지 내가 가지고있는

var document = jsdom.jsdom('<!DOCTYPE html><html><head></head><body id="abody" ></body></html>', jsdom.level(2, 'style'), { 
     features : { 
      FetchExternalResources : ['script', 'css'], 
      QuerySelector : true 
     } 
    }); 

CSS를 머리 태그에 삽입했지만 아무 소용이 없습니다. 그리고 나는 위의 코드를 잘못 수행 할 수도 있음을 알고 있습니다.

도움이 될 것입니다.

+0

본 ** https : //github.com/yonran/jsdom/blob/style/lib/jsdom/level2/style.js** –

+0

본 적이 있지만 길을 찾지 못했습니다. 그 함수를 호출하십시오. – Paul

답변

11

음,이가가는 좀 바보 같은 소리 그러나 이것은 내가 무슨 짓을 :

var path = require('path'); 
    var fs = require('fs'); 
    var mainCss = fs.readFileSync(path.normalize(__dirname + "web_main.css"), 'utf8'); 
    var document = jsdom.jsdom('<!DOCTYPE html><html><meta http-equiv="content-type" content="text/html; charset=utf-8"><head></head><body id="abody" ></body></html>', jsdom.level(3, 'index'), { 
     features : { 
      FetchExternalResources : ['script', 'css'], 
      QuerySelector : true 
     } 
    });  
    var window = document.createWindow(); 
    var head = document.getElementsByTagName('head')[0]; 
    style = document.createElement("style"); 
    style.type = 'text/css'; 
    style.innerHTML = mainCss; 
    head.appendChild(style); 

을 그래서 기본적으로 내가 변경된 모든 시작에 그것을 가지고 직접, 3 인덱스 레벨을 이동하는 대신 한 HTML , 나는 나중에 그것을 덧붙였다.

매우 간단하고 다른 사람들을 돕기를 바랍니다.