2016-01-12 32 views
0

我已經使用節點編寫了一個phantomjs腳本來截取網頁截圖。我試圖截圖的頁面包含一個重要的外部腳本,它將變量添加到全局窗口對象中。即。窗口.__組件。帶外部腳本的PhantomJS節點

問題是,這是從未設置的。它在瀏覽器中運行良好,但它只是在幻影中死亡。我在打開頁面之前修改了腳本以注入腳本,我添加了一個檢查以確保在打開頁面之前添加了組件對象,但仍然失敗。

任何想法?

function injectExternalScripts(page, ph, url) { 
    page.includeJs('http://external-script',()=>{ 

     page.evaluate(() => { 
      return window; 
     }, function(result) { 
      if(result.__components) { 
       openPage(page, ph, url); 
      } 
     }); 

    }); 
} 

function openPage(page, ph, url) { 
    page.open(url, (status)=>{ 
     // errors returned from page 
     // window.__components is null 
    }); 
} 

回答

1

您只能從PhantomJS的頁面上下文中返回原始對象。 window和DOM節點不是原始對象,並且如果__components也不是原始對象,那麼您也無法返回該對象。

如果__components設置與此您可以檢查:

page.evaluate(() => { 
    return !!window.__components; 
}, function(result) { 
    if(result) { 
     openPage(page, ph, url); 
    } 
});