0
我正在嘗試開發一個簡單的Chrome擴展,其中我需要'聽'在頁面內進行的各種AJAX調用。Chrome.tabs.executeScript()和文件包括
這是我用來聽AJAX調用的代碼:
var isAjaxWorking = false;
//timeout
var timeout;
//create new AJAX listener
var s_ajax = new Object();
//rewrite send() method XMLHttpRequest
s_ajax.tempSend = XMLHttpRequest.prototype.send;
s_ajax.callback = function (event){
isAjaxWorking = true;
timeout = 500;//5 seconds
var cycle = setInterval(function(){
timeout--;
if(timeout > 0){
if(event.readyState === 4){
isAjaxWorking = false;
clearInterval(cycle);
}
}
else{
console.log('s_ajax.callback : timeout');
clearInterval(cycle);
isAjaxWorking = null;
}
},10);
}
XMLHttpRequest.prototype.send = function(a,b) {
if (!a) var a='';
if (!b) var b='';
s_ajax.tempSend.apply(this, arguments);
s_ajax.callback(this);
}
如果我注入這直接我要聽的頁面的控制檯內,它就像一個魅力,但是當我嘗試執行這在我的Chrome擴展中使用chrome.tabs.executeScript()
,就好像在腳本執行後立即刪除所有內容。我知道這可能非常簡單,但我無法解決這個問題。在此先感謝您的每一個提示
你能包括你如何在問題中使用'chrome.tabs.executeScript'嗎? 「一切都被刪除了」是什麼意思? – guest271314
有一個專門用於監聽網絡請求的API,爲什麼不使用它呢? https://developer.chrome.com/extensions/webRequest – BeardFist
@ guest271314我只是在你在互聯網上找到的每個例子中都使用它;順便說一下,我認爲問題是詹姆斯·戴斯在第一個答案中指出的:我的覆蓋不會影響頁面中的方法,因爲我的代碼不與頁面的代碼交互 – Alessandro