簡體   English   中英

為什么Phantom.js無法評估我的Backbone應用程序的工作性能?

[英]Why doesn't Phantom.js evaluate work with my Backbone app?

page.open(My_url, function(status) {
                        page.evaluate(function() { 
                            var html = document.documentElement.outerHTML;
                            return html;
                        }, function(result){
                            res.send(result);
                        });
                    });

我有一個Backbone應用程序。 “ My_url”指向該主干頁面。

當我運行此代碼時,outerHTML不包含渲染的視圖。 它只具有基本的CSS /腳本/容器持有人。

就像Backbone應用程序根本沒有運行。 如何使valuate()返回完全渲染的Backbone應用程序(在所有ajax調用和填充之后)?

畢竟,這就是Phantom.js的重點

加載頁面后立即評估頁面並不總是足夠的。 有時,由於在頁面上編寫JavaScript的方式不同,您將不得不等待並允許頁面的JavaScript執行。 為此,我建議您嘗試添加一個等待時間,然后再執行評估。 例如

function ( status ) {
  if ( status === 'fail' ) {
    phantom.exit( 1 );
    return; // essential, if you don't, below will be executed
  }

  window.setTimeout(
    function () {
      var result = page.evaluate(
        function () {
          var html = document.documentElement.outerHTML;
          return html;
        }
      );
      res.send( result );
    },
    1000 // wait 1,000ms (1s)
  );
}

如果您發現有必要等待,那么您可能需要等待一些事情。 為此,在Internet上尋找一個waitFor或類似的函數,它將允許您的腳本連續輪詢直到出現特定的DOM元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM