<script>
PhantomJS を使用して、他のタグの前に余分なタグがあるかのように JS を挿入したいと思い<script>
ます。これは、ページ上のスクリプトが、PhantomJS にないいくつかの関数、つまりFunction.prototype.bind
およびを使用しているためwindow.webkitRequestAnimationFrame
です。2 つのカスタム実装を含む JS ファイルがあり、ページでスクリプトを実行するときに PhantomJS でそれらを使用したいと考えています。
問題は、page.open の前に page.injectJs を実行すると、スクリプトが空のページに挿入され、開かれているページに引き継がれないことです。
または、page.open の後に page.injectJs を実行すると、JavaScript エラー (未定義関数) が既に発生しているため手遅れです。
うまくいくように見える方法を見つけましたが、明らかにハックです:
page.onResourceReceived = function() {
page.injectJs('phantom-hacks.js')
};
これにより、何度も (リソースごとに 2 回) 挿入されますが、私のスクリプトはべき等であるため問題ありません。ただし、これを行う適切な方法を知りたいです。ページ上のスクリプトが実行される前に、一度だけ挿入してください。
ありがとう :)