【问题标题】:PhantomJS render of individual frame not working properly单个帧的 PhantomJS 渲染无法正常工作
【发布时间】:2014-05-23 17:22:45
【问题描述】:

我使用PhantomJS 作为创建网站本地副本的方法,我有一个函数可以遍历网站的框架结构并在框架内容移动时抓取框架内容,并将其存储在全局数组中。目前这部分工作正常,问题是:

在每个步骤中,我都尝试使用

将帧转换为 Base64 编码图像
var temp =  require('webpage').create();
temp.content = currpage.frameContent; //set the temp page to be the current frame
var b64 = temp.renderBase64('png');

如果我只是将currpage.frameContent 导出到一个文件并打开它,我可以看到它的内容以及在浏览器中打开它,并看到它确实显示了它应该显示的内容(大部分是广告) .

虽然b64变量没有值,运行程序时也没有弹出错误。

我还应该注意b64 并不总是没有价值,有时我确实得到了正确的帧渲染,这取决于我正在抓取的网站。

【问题讨论】:

  • frame.Content 在这种情况下看起来如何? render 函数会渲染什么吗?
  • 它是一个标准的 html 封闭站点,在浏览器中打开等等。我事先从其中删除了脚本标签,因为它们不再需要了。在这些情况下,渲染不会渲染任何东西。如果我将框架内容输出到一个 html 文件并运行一个单独的 phantomjs 实例,打开页面并呈现它的内容,它就可以正常工作。不幸的是,我认为这不是我正在尝试做的事情的潜在解决方案
  • 最奇怪的部分是 temp.content 有我想要的,但它只是没有被渲染

标签: javascript phantomjs


【解决方案1】:

一段时间后问题被发现了,虽然我们正在改变项目的方向,但我会发布如何解决我的问题。

为了让 temp 渲染,我所要做的就是设置 temp 的视口。

temp.viewportSize = {
    width: 480,
    height: 800
};

【讨论】:

    猜你喜欢
    • 2015-08-26
    • 1970-01-01
    • 2021-05-04
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多