PhantomJS console.log对象输出[对象对象]

时间:2016-04-20 16:46:17

标签: javascript dom phantomjs

我使用以下代码获取页面中的所有img标记:

"use strict";
var system = require('system');
var args = system.args;
var page = require('webpage').create();

page.onLoadStarted = function () {
    console.log('Loading Page...');
};

page.onLoadFinished = function (status) {
  console.log('Loading finished.');
  var imgs = page.evaluate(function() {
    console.log(document.images);
    console.log(document.images.length);
    return document.images;
    });
  for (var i = 0; i < imgs.length; i++){
    //console.log(JSON.stringify(imgs[i]));
    console.log(imgs[i]);
    console.log(imgs[i].alt);
    }
  phantom.exit();
};

page.open(system.args[1]);

它按预期正确输出替代文字,但在线:

console.log(imgs[i]);

它只输出:&#34; [object object]&#34;我希望得到所有的img标记代码,如果我使用JSON.stringify它会输出一个非常长的msg,它也不是我想要的img标记代码。

有谁可以解释发生了什么?我如何得到img标签代码?

1 个答案:

答案 0 :(得分:4)

发生了什么?不确定是诚实的。我怀疑您是否正在比较PhantomJS对使用Chrome的JS控制台记录Element对象的处理方式,该控制台将实时引用显示为标记而不是[Object object]。如果你从Chrome浏览器alert(imgs[i])开始,请看[Object HTMLImageElement]

您可以从console.log(imgs[i].outerHTML);获得您想要的内容。

请参阅Element.outerHTML