2016-12-08 59 views
0

我試圖加載一些腳本到我的頁面被phantomjs訪問。我使用2.1.1順便說一句。phantomJS includeJs方法總是無法通過操作加載腳本

我在這裏敲打我的頭,因爲我嘗試了各種各樣的事情,他們似乎都以同樣的方式失敗,使我覺得可能我錯過了配置設置或其他東西。

任誰我嘗試:

//I dont actually care about using jquery, just trying loading from different servers 
page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js'); 

page.includeJs('https://aSiteIControl.com/jquery.min.js'); 

,然後我有一個onResourceError處理程序是這樣的:

page.onResourceError = function(resourceError) { 
    console.error(resourceError.url + ': ' + resourceError.errorString); 
    console.error(JSON.stringify(resourceError)) 
}; 

輸出這個不管是什麼我試過了:

https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js: Operation canceled 
{"errorCode":5,"errorString":"Operation canceled","id":1,"status":null,"statusText":null,"url":"https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"} 

無論我使用何種協議或腳本所在的服務器,這似乎都會發生。而且,這兩個例子都可以在瀏覽器中找到。任何機構都知道我可能做錯了什麼?

要對接受的答案CLEAR因爲沒有代碼:

只是去看看這個問題:

PhantomJS: injecting a script before any other scripts run

+0

[PhantomJS的可能的複製外部腳本:之前的任何其它注入的腳本腳本運行](http://stackoverflow.com/questions/15459049/phantomjs-injecting-a-script-before-any-other-other-scripts-run) – Rooster

回答

2

這可以通過超時或調用模體對象的exit()函數引起的,而被加載JS,或者如果您嘗試打開另一個頁面。你可以添加你所有的代碼嗎?

基於該documentation可以包括外部JS:

包括從指定的URL(通常是一個遠程位置)

+0

嗯。我在午餐,所以我不能立即嘗試它,但我不知道,如果page.open可以在回調。我一直假設includeJs是在運行page.open – Rooster

+0

之前設置的東西,我的懷疑是正確的。感謝您的光臨:) – Rooster

+0

歡迎您:) –

1

我敢打賭,你可以直接包含僅本地腳本。請嘗試:

(page.evaluate(function() { 
     var script = document.createElement('script'); 
     script.src = 'http://urlToScript.com'; 
    })) 
+0

這將工作,但我需要包括的腳本之前加載其他東西在頁面上。我的預期用例實際上是爲了填充一些es6的東西,這些東西打破了某些頁面,因爲幻像並不完全支持es6。 – Rooster

+0

用什麼:下載網頁,修改它(加入js)並在頁面模塊內部執行它? – mitch