javascript - 如何让 PhantomJS 在渲染截图时包含背景图片?

标签 javascript phantomjs headless headless-browser

我正在使用 PhantomJS 截取网页的屏幕截图,使用 page.render() 方法,详见 https://github.com/ariya/phantomjs/wiki/Screen-Capture .

它工作正常,除了背景图像,所有 有时显示为空白。如果转到 http://screener.brachium-system.net/,您可以看到问题的示例。并输入 http://www.bing.com/作为 URL,有一个很大的空白区域应该是背景图像。

有没有办法强制显示背景图片?

最佳答案

使用默认的 rasterize.js from Phantom examples 对我来说效果很好:

如果问题仍然存在,请尝试增加页面加载和呈现之间的延迟,将其设置为 200 毫秒(示例代码中的第 29 行):

page.open(address, function (status) {
    /* irrelevant */
   window.setTimeout(function () {
            page.render(output);
            phantom.exit();
        }, 200);
}

为了更好地理解为什么它应该有所帮助:Phantom 请求页面并在它完全加载后立即将其呈现为图像(所有 Assets 都已就位且脚本已执行)。但是背景图片是通过 JavaScript 加载的,浏览器无法提前知道会有更多的图片请求。在页面加载和截取屏幕截图之间设置更长的延迟,以便有时间下载和显示可能已从脚本请求的图像。

关于javascript - 如何让 PhantomJS 在渲染截图时包含背景图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14336637/

相关文章:

javascript - 数据未附加到 Handlebars.js 中的元素

javascript - 从谷歌分析获取json

javascript - 将 Angular 应用程序与 Vanilla JS webapp 集成

javascript - Grunt 模板变量和 if else

python - 如何使用 Selenium 从搜索结果中提取 Google 链接的 href?

phantomjs - 无法加载 url,然后无法发送登录参数

android - 如何在没有 HDMI 的情况下启动 Qualcomm Snapdragon

python - 使用 Selenium Python 客户端在不同浏览器中处理 headless (headless)模式

javascript - PhantomJS 2.0.0 page.open() 不再适用于本地文件

ubuntu - 客户端服务器 GUI 资源