Javascript 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

我正在使用PhantomJS渲染一个屏幕截图:

小提琴:

交易视图图表代码:

<!-- 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')
       })
    }))
  }
)