如何在PhantomJS中使用iframe获取完整解释的html源代码

时间:2015-02-12 18:04:02

标签: javascript html iframe phantomjs

使用PhantomJS,我想打印像Firebug那样的网页的html源代码。用iframe解释。

var page = require('webpage').create();

page.open('http://google.com', function () {
  console.log(page.content);
  phantom.exit(); 
});

这似乎只显示没有iframes html的解释HTML。并且使用评估无法帮助,因为我的iframe在另一个域中,所以我认为javascript无法访问它们。

1 个答案:

答案 0 :(得分:6)

我发现通过帧来获取内容不起作用,因为phantomjs中的page.framesCount只计算子帧而不是主帧。以下是显示所有帧的HTML的工作代码:

// Apparently framesCount doesn't include the main frame so add 1
var frameCount = page.framesCount + 1
var html = page.frameContent + '\n\n'
for (var i = 1; i < frameCount; ++i) {
  page.switchToFrame(i)
  html += page.frameContent + '\n\n'
}

最后一件重要的事情,如果您不想要源但想要访问iframe DOM,即使它在另一个域中也是这样:

phantomjs --web-security=no

访问iframe正文的代码是:

var i = document.getElementsByTagName('iframe')
var body = i[0].contentWindow.document.body