我使用PhantomJS與jQuery,我想知道是否有可能捕獲XMLHttpRequest,因爲它傳遞給瀏覽器,而不發起自己的POST/GET。用jQuery捕捉XHR?
1
A
回答
8
有簡單的jQuery的功能,可以讓你修改AJAX請求在發送之前,但他們唯一的目標AJAX請求的jQuery啓動。爲了趕上網頁上的所有AJAX請求,使用以下基本JS-唯一途徑:
(function(open){
XMLHttpRequest.prototype.open = function(method, url, async, username, password) {
// modify the variables here as needed or use 'this` keyword to change the XHR object or add event listeners to it
open.call(this, method, url, async, username, password);
};
})(XMLHttpRequest.prototype.open);
你也可以重寫XHR的send()函數:
(function(send){
XMLHttpRequest.prototype.send = function(body) {
// your code
send.call(this, body);
};
})(XMLHttpRequest.prototype.send);
基本上,這個代碼需要在您的頁面上運行的FIRST代碼。隨後的所有XHR請求都將通過重寫的函數,允許您更改任何參數等。
注意:如果您希望定位某些版本的IE,則需要爲ActiveXObject實現類似的代碼,即IE用於AJAX。
1
ajaxPrefilter聽起來不錯,但從來沒有用過它。這在過濾請求之前去服務器。然後,您可以使用pipe修改,你想要什麼,當請求返回:
$.ajaxPrefilter(function(options, originalOptions, jqXHR){
jqXHR.pipe(function(data){
//modify the data the way you want
})
});
0
Phantom的onResourceReceived
回調會針對頁面發出的所有XHR/AJAX請求調用。實際上,兩次,一次是stage =「start」,一次是stage =「end」。它不會給你的內容,但它會捕獲該網址。
相關問題
- 1. 如何捕捉任何XHR請求?
- 2. 使用jQuery捕捉列表
- 3. jQuery的捕捉ID
- 4. jQuery&Ajax:捕捉500
- 5. jQuery「捕捉」效果
- 6. @捕捉不捕捉
- 7. jQuery的scrollTo捕捉負載
- 8. jQuery Mobile滑塊捕捉?
- 9. 如何捕捉與jquery
- 10. PHP到jQuery - 捕捉json
- 11. 垂直滾動捕捉jQuery
- 12. XHR拋出無法捕捉到的錯誤
- 13. 通用捕捉
- 14. 使用jQuery UI檢索「捕捉到」元素拖動啓用捕捉
- 15. 如何用jQuery捕捉對話Primefaces?
- 16. 使用jQuery捕捉運行css轉換
- 17. 捕捉$
- 18. 捕捉DllNotFoundException /調用
- 19. 捕捉使用JavaScript
- 20. 嘗試捕捉塊不捕捉?
- 21. 使用Chrome擴展程序捕捉並修改來自Facebook的XHR請求
- 22. 使用角度捕捉和捕捉來禁用所有抽屜
- 23. XHR捕獲404錯誤
- 24. chrome.webRequest.onBeforeRequest捕獲AngularJS XHR請求
- 25. jQuery UI拖放,捕捉到底部
- 26. JQuery UI捕捉元素內的網格
- 27. 捕捉動態ID從jQuery的
- 28. 捕捉與jQuery的頁面鏈接
- 29. JQuery可拖拽/捕捉限制區域
- 30. tinymce v4 jquery:如何捕捉onkeyup?
非常感謝,效果很好。 – relm
對未來用戶謹慎使用:iframe中的代碼獲取自己的窗口對象副本,您還需要將XHR掛接到它們中。 –