PhantomJS 與整頁加載檢測的挑戰
當使用PhantomJS 加載網頁時,您可能會面臨onLoadFinished 過早觸發的問題由於非同步載入內容而導致的回調。為了解決這個問題並確保在螢幕截圖中正確捕獲所有動態元素(例如廣告),一種方法是在執行渲染操作之前引入延遲。
如常規 rasterize.js 範例所示,PhantomJS提供使用 window.setTimeout() 延遲渲染過程的選項。這允許 JavaScript 在觸發螢幕截圖操作之前完成載入額外的資源。
下面修改後的程式碼包含1000 毫秒的延遲,這應該為大多數網頁完全載入提供足夠的時間:
page.open(address, function (status) { if (status !== 'success') { console.log('Unable to load the address!'); phantom.exit(); } else { window.setTimeout(function () { page.render(output); phantom.exit(); }, 1000); // Change timeout as required to allow sufficient time } });
透過根據需要調整超時值,您可以確保PhantomJS捕獲網頁的完整狀態,包括任何非同步內容。
以上是如何在 PhantomJS 中處理非同步載入並確保全頁擷取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!