Javascript PhantomJS屏幕截图交易视图图表
我正在使用PhantomJS渲染一个屏幕截图: 小提琴: 交易视图图表代码:Javascript PhantomJS屏幕截图交易视图图表,javascript,phantomjs,render,webpage-screenshot,Javascript,Phantomjs,Render,Webpage Screenshot,我正在使用PhantomJS渲染一个屏幕截图: 小提琴: 交易视图图表代码: <!-- TradingView Widget BEGIN --> <div class="tradingview-widget-container"> <div id="tradingview_f0339"></div> <div class="tradingview-widget-copyright"><a href="https://ww
<!-- TradingView Widget BEGIN -->
<div class="tradingview-widget-container">
<div id="tradingview_f0339"></div>
<div class="tradingview-widget-copyright"><a href="https://www.tradingview.com/symbols/NASDAQ-AAPL/" rel="noopener" target="_blank"><span class="blue-text">AAPL chart</span></a> by TradingView</div>
<script type="text/javascript" src="https://s3.tradingview.com/tv.js">
</script>
<script type="text/javascript">
new TradingView.widget(
{
"width": 980,
"height": 610,
"symbol": "NASDAQ:AAPL",
"interval": "D",
"timezone": "Etc/UTC",
"theme": "Light",
"style": "1",
"locale": "en",
"toolbar_bg": "#f1f3f6",
"enable_publishing": false,
"allow_symbol_change": true,
"container_id": "tradingview_f0339"
}
);
</script>
</div>
page.includeJs(“,function()){
}))
问题是,呈现的屏幕截图显示,尽管有上述代码,图表仍在加载
如何让PhantomJS在完全加载后拍摄图表的屏幕截图
感谢您的帮助设置超时将不起作用,因为映像可能需要更长的时间,甚至在两秒钟内加载。相反,您需要使用onLoad处理程序。只是做了一个快速的谷歌搜索,这是你需要的。。。页面加载后,我们仍然没有完成。使用jQuery和PhantomJS检查小部件iframe是否已完成加载
$(“#main widget frame container iframe”)。在('load',function(){console.log('iframe load,now take snapshot');page.render('screenshot.png');phantom.exit();})
@indospace.io感谢您的回复和帮助!我对我在哪里添加page.onLoadFinished=函数(状态)感到困惑,你介意给我看一个上面有幻影代码的例子吗?我尝试过一些不同的事情,但都没有成功。再次感谢!就快到了,必须包括jQuery。下面是做这件事的细节<代码>http://phantomjs.org/api/webpage/method/include-js.html我没有安装PhantomJS,请尝试一下,然后告诉我。这是非常简单的逻辑,但正如我们所知,Javascript可以是一个母亲!
var webPage = require('webpage')
var page = webPage.create()
page.open('https://example.com/chart_test.php',
function(status) {
})
)
page.includeJs('https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js', function() {
(page.evaluate(function() {
// jQuery is loaded, now manipulate the DOM
var date = new Date(),
time = date.getTime()
$('#main-widget-frame-container iframe').on('load', function() {
console.log('iframe loaded, now take snapshot')
page.render('screenshot_' + time + '.png')
})
}))
}
)
console.log('Status: ' + status);
var date = new Date();
var time = date.getTime();
$('#main-widget-frame-container iframe').on('load', function() {
console.log('iframe loaded, now take snapshot');
page.render('screenshot_' + time + '.png');
phantom.exit();
});
});
}
var webPage = require('webpage')
var page = webPage.create()
page.open('https://example.com/chart_test.php',
function(status) {
})
)
page.includeJs('https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js', function() {
(page.evaluate(function() {
// jQuery is loaded, now manipulate the DOM
var date = new Date(),
time = date.getTime()
$('#main-widget-frame-container iframe').on('load', function() {
console.log('iframe loaded, now take snapshot')
page.render('screenshot_' + time + '.png')
})
}))
}
)