是否可以使用chromeless API访问document.body.scrollHeight?

时间:2017-10-20 00:55:27

标签: javascript chromeless

我想使用chromless api捕获整页截图。 (如同折叠中的所有内容一样,不仅仅是当前视口。

为了做到这一点,我想人们会计算网页的高度(使用document.body.scrollHeight),并将视口高度设置为该值。

这是我目前所拥有的,我正在测试他们的demo site

const chromeless = new Chromeless({ remote: true })

const screenshot = await chromeless
  .goto('https://www.graph.cool')
  .setViewport({width: 1024, height: 800, scale: 1})
  .evaluate(() => {
    const height = document.body.scrollHeight;
    return height
    })
  .setViewport({width: 1024, height: height, scale: 1})
  .screenshot()

console.log(screenshot)

await chromeless.end()

我认为(希望)我的javascript没问题,也许这是API的限制?是否可以从无头网络浏览器访问document对象?

以下是有关评估以供参考的文档: https://github.com/graphcool/chromeless/blob/master/docs/api.md#api-evaluate

1 个答案:

答案 0 :(得分:1)

可以通过抓取文档的高度来截取整页(demo):

const chromeless = new Chromeless({ remote: true })

const scrollHeight = await chromeless
  .goto('https://www.graph.cool')
  .evaluate(() => document.body.scrollHeight)

console.log(`The document's height is ${scrollHeight}px`)

const screenshot = await chromeless
  .setViewport({width: 1024, height: scrollHeight, scale: 1})
  .screenshot()

console.log(screenshot)

await chromeless.end()

需要注意的是,我们必须从evaluate()调用中返回高度并将其分配给变量scrollHeight,我们可以使用它来设置视口的高度。