使用PhantomJS,我想注入一些JS,就好像在其他<script>
標記之前有一個額外的<script>
標記。這是因爲頁面上的腳本使用PhantomJS沒有的一些功能,即Function.prototype.bind
和window.webkitRequestAnimationFrame
。我有一個JS文件和兩個自定義實現,我希望PhantomJS在頁面上運行腳本時使用它們。PhantomJS:在任何其他腳本運行之前注入腳本
難度在於,如果我在page.open之前執行page.injectJs,腳本將被注入一個空白頁面,並且不會轉移到正在打開的頁面。
或者,如果我在page.open之後執行page.injectJs,則已經發生JavaScript錯誤(未定義的函數)已經太晚了。
我發現,似乎工作的一種方式,但顯然是一個黑客:
page.onResourceReceived = function() {
page.injectJs('phantom-hacks.js')
};
這將給它多次(兩次,每次資源,顯然),不過沒關係,因爲我的劇本是冪等。但是,我想知道這樣做的正確方法:只在頁面上的任何腳本運行之前注入一次。
謝謝:)
爲什麼不保持一個哈希所有要注入其中關鍵是該文件的文件和價值在於它是否被注射或不和,如果沒有被注入再注入呢?或者你可以在第一次運行後停止事件監聽器? – Nonconformist 2013-06-12 19:55:41