我目前正在开发一个项目,要求我通过JSDOM将计算样式发送到浏览器。我目前正在寻找一种方法将一些基本的CSS注入JSDOM,以便它可以计算出正确的内联样式(是的,我知道这很糟糕)。
根据我的发现,我可以使用JSDOM Level 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插入head标签,但无济于事。而且我知道我也可能错误地执行上述代码。
任何帮助都会很棒。
答案 0 :(得分:12)
嗯,这听起来有点蠢,但这就是我所做的:
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中,我之后附加它。
非常简单,我希望它可以帮助别人。