2012-02-13 153 views
2

PhantomJS不會加載腳本,因爲它試圖在以下路徑加載它們:file:/// [在html文件中指定的src]。在html文件中,腳本的路徑是相對的,我不想讓它們成爲絕對的(按照這個例子http://thomasardal.com/tag/phantomjs/)。因此,例如在html頁面中,我有<script type="text/javascript" src="jquery-1.7.0.js"></script>,PhantomJS會嘗試從file:///jquery-1.7.0.js中加載它,這是不存在的。如何從正確的路徑獲取PhantomJS加載腳本?PhantomJS不能從html頁面正確加載腳本

回答

0

有同樣的問題,並且看起來像是幻像中的錯誤。

找到一個辦法來解決這個問題:

裏面你page.open函數可以調用page.injectJs(文件名) - 和文件名會出現一個相對路徑從執行路徑或頁面正常工作。 libraryPath(默認是第一個js arg所在的位置)

+0

好吧,我想爲單獨的模塊測試分開html文件,並保持js加載這些頁面儘可能通用。我找到了類似的方法:捕獲onResourceRequested,參數是請求,它保持請求的URL,然後我調用injectJs函數,提供路徑爲libraryPath + request.url。但仍然看起來hacky( – 2012-02-14 20:52:47

+0

我嘗試使用resourceRequested時從文件加載HTML使用相對url,但它從來沒有被調用:-(我切換到茉莉花,不需要瀏覽器(和作爲個人筆記,有更好的語法)。對我來說非常合適,因爲js不是真的依賴於dom操作......所以只使用了injectJs,並且工作得很好,並且很容易插入teamcity – Daniel 2012-02-17 14:54:50

+0

幻燈片上有針對這些問題的線程,可能值得遵循:http://code.google.com/p/phantomjs/issues/detail?id=330&q=relative%20url和http://code.google.com/p/phantomjs/issues/detail?id=171&can = 8 – Daniel 2012-02-17 15:05:54