2012-04-25 21 views
7

Attualmente sto lavorando su un progetto che richiede che gli stili computati vengano inviati al browser tramite JSDOM. Attualmente sto cercando un modo per iniettare alcuni CSS di base in JSDOM in modo che possa computerizzare lo stile inline corretto (Sì, lo so che è cattivo).Come faccio ad aggiungere fogli di stile a JSDOM

Da quello che ho scoperto che posso utilizzare JSDOM Livello 2, ma da lì non riesco a trovare alcuna documentazione su come iniettare gli stili Questo è quello che ho finora

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

ho stato l'inserimento del css nel tag head ma senza successo. E so che potrei anche fare il codice sopra sbagliato.

Qualsiasi aiuto sarebbe fantastico.

+0

Hai visto questo ** https: //github.com/yonran/jsdom/blob/style/lib/jsdom/level2/style.js** –

+0

Ho visto ma non riuscivo a capire un modo per chiama quelle funzioni. – Paul

risposta

11

Beh, questo sta per suona un pò stupido, ma questo è quello che ho fatto:

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

Quindi, in pratica tutto quello che ho cambiato si muoveva il livello a 3 di indice, e invece che direttamente averlo in partenza html , L'ho aggiunto in seguito.

È piuttosto semplice e spero che aiuti qualcun altro.

Problemi correlati