【发布时间】:2015-01-18 15:51:18
【问题描述】:
我尝试使用 PhantomJS 制作 www.fallswoodsmith.com 的屏幕截图。我的代码是:
var page = require('webpage').create();
page.viewportSize = { width: 1024, height: 768 };
page.clipRect = {top: 0, left: 0, width: 1024, height: 768};
page.open('http://www.fallswoodsmith.com', function () {
page.render('cache/www.fallswoodsmith.com123567266_1024_768.png', {format: 'png', quality: '10'});
phantom.exit();
});
这个页面只有 JS,所以没有 JS 就没有内容。由于某种原因,PhantomJS 没有执行这个 JS。我还尝试为page.render() 和phantom.exit() 设置5 秒的超时时间,但这并没有改变什么。如果我在page.render() 之前执行console.log(page.content),我将获得页面的完整HTML - 只是没有JS 所做的更改。
为什么PhantomJS不执行页面的JS?
更新 1: 我添加了以下调试内容:
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
page.onError = function(msg, trace) {
var msgStack = ['ERROR: ' + msg];
if (trace && trace.length) {
msgStack.push('TRACE:');
trace.forEach(function(t) {
msgStack.push(' -> ' + t.file + ': ' + t.line + (t.function ? ' (in function "' + t.function +'")' : ''));
});
}
console.error(msgStack.join('\n'));
};
page.onResourceError = function(resourceError) {
console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
};
page.onResourceTimeout = function(request) {
console.log('Response (#' + request.id + '): ' + JSON.stringify(request));
};
我的控制台中没有 console.log() 输出...
【问题讨论】:
-
请注册
onConsoleMessage、onError、onResourceError、onResourceTimeout活动。可能有错误。 -
@ArtjomB。我已经注册了这些事件,但我的控制台上没有输出...(请参阅 update1)
标签: javascript phantomjs