我正在写一个网络抓取脚本,我想使用getComputedStyle(),但是它在节点上不起作用。我收到错误,说是getComputedStyle is not defined
如果我尝试global.getComputedStyle,它会告诉我global.getComputedStyle不是一个函数
显然,节点上不存在window,所以我不能使用它。
我需要使用什么?
function sortElementsByFontSize(elements: any[]): any[]{
return elements.sort((a, b) => {
let aFontSize = parseInt(global.getComputedStyle(a)['fontSize']);
let bFontSize = parseInt(global.getComputedStyle(b)['fontSize']);
console.log("Comparing: " + aFontSize + " - " + bFontSize);
if(aFontSize === bFontSize){
return 0;
} else {
return aFontSize > bFontSize ? 1 : -1
}
});
}发布于 2021-03-05 09:07:55
getComputedStyle()是存在于浏览器中的东西,而不是nodejs中的东西。
如果您不清楚这一点,那么nodejs是一个Javascript环境,它支持Javascript语言的最新标准,但它有自己的运行时库,支持联网和文件I/O。类似地,浏览器支持Javascript语言的最新标准,但它有自己的运行时库,支持getComputedStyle()等。
Nodejs本身不做任何HTML渲染,不能解析或理解CSS,等等……
所以,要使用像getComputedStyle()这样的函数,你必须要么在浏览器环境中运行你的Javascript,要么使用nodejs中的一个库,让你可以访问一个实际的浏览器引擎,比如Puppeteer,它使用Chromium浏览器引擎来创建一个浏览器环境,在这个环境中你可以运行一些Javascript。
https://stackoverflow.com/questions/66484956
复制相似问题