全ページ読み込み検出による PhantomJS の課題
PhantomJS を利用して Web ページを読み込む場合、onLoadFinished の早期起動の問題に直面する可能性があります。コンテンツの非同期読み込みによるコールバック。これに対処し、広告などのすべての動的要素がスクリーンショットに正しくキャプチャされるようにするための 1 つのアプローチは、レンダリング操作を実行する前に遅延を導入することです。
通常の rasterize.js の例で示されているように、PhantomJS window.setTimeout() を使用してレンダリング プロセスを遅延するオプションを提供します。これにより、JavaScript はスクリーンショット アクションをトリガーする前に追加リソースの読み込みを完了できます。
以下の変更されたコードには 1000 ミリ秒の遅延が組み込まれており、ほとんどの Web ページが完全に読み込まれるのに十分な時間が提供されます。
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 が非同期コンテンツを含む Web ページの完全な状態を確実にキャプチャできます。
以上がPhantomJS で非同期読み込みを処理し、ページ全体を確実にキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。