带木偶的外部样式表

时间:2019-08-07 06:53:50

标签: javascript puppeteer google-chrome-headless

我正尝试在puppeteer Js中获得所有外部样式表,而我并不仅获得一个。 这是我的代码:

try {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    page.on('response', async response => { // don't await anything on this line
        if(response.request().resourceType() === 'stylesheet') {
            resolve(response.text()); // await and resolve here
        }
    });

    await page.goto(url);
    await browser.close();
    // don't resolve here
} catch (e) {
    return reject(e);
}

这里的问题是,当我有1个以上外部样式表时,我无法获取它们。我将如何实现

  

注意:我使用的是resolve,因为我需要样式表以进行进一步的处理   处理。并消化了他们的返回。

1 个答案:

答案 0 :(得分:0)

您可以将所有样式表(或它们的Promises)添加到数组中,然后在加载页面并解决Promises之后对其进行解析。

代码

try {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    const stylesheetPromises = [];

    page.on('response', async response => {
        if(response.request().resourceType() === 'stylesheet') {
            stylesheet.push(response.text());
        }
    });

    await page.goto(url);
    await browser.close();
    const stylesheets = await Promise.all(stylesheetPromises);
    resolve(stylesheets);
} catch (e) {
    return reject(e);
}

然后用包含所有样式表的字符串数组解决Promise(我认为此代码位于内部)。这是通过将response.text()的所有Promises添加到数组来完成的,我们最终通过await Promise.all。之后,结果将返回。