2012-04-25 8 views
7

Obecnie pracuję nad projektem, który wymaga, że ​​style obliczeniowe będą wysyłane do przeglądarki przez JSDOM. Obecnie szukam sposobu, aby wstrzyknąć kilka podstawowych CSS do JSDOM, aby mógł on komputer prawidłowego stylu inline (Tak, wiem, że jest źle).W jaki sposób reklamujesz arkusze stylów do JSDOM

Z tego co dowiedziałem się, mogę używać JSDOM Level 2, ale stamtąd nie mogę znaleźć żadnej dokumentacji na temat sposobu wstrzykiwania style To, co mam tak daleko

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

mam wstawia css do tagu głowy, ale bez skutku. I wiem, że mógłbym zrobić powyższy kod również źle.

Każda pomoc będzie świetna.

+0

Czy widziałeś to ** https: //github.com/yonran/jsdom/blob/style/lib/jsdom/level2/style.js** –

+0

Widziałem to, ale nie mogłem wymyślić sposób zadzwoń do tych funkcji. – Paul

Odpowiedz

11

Cóż, to będzie brzmi trochę głupi, ale to, co zrobiłem:

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); 

Więc w zasadzie wszystko, co zmieniło poruszał poziom do 3 indeksie, a zamiast bezpośrednio mając go w wyjściowym html , Dołączyłem to później.

Jest to bardzo proste i mam nadzieję, że pomoże komuś innemu.

Powiązane problemy