由於擴展無法訪問unsafeWindow
,如Firefox可以掛接到DOM腳本,我在尋找其他的想法,所以我來到SO求助!擴展:如何攔截AJAX響應?
如何使用一些代碼注入到DOM和發送到後臺頁面,調用內容腳本進行最後的處理之前,然後做一些初步的處理截取的響應。完成後,它會迴應具有修改後響應的背景或原始(取決於),並且後臺頁面將響應發送回DOM,以便將其處理到DOM腳本響應函數。
沒有與此正好一個問題,後臺頁面不能與DOM通信。
我做了一個小測試與注射一些代碼,在那裏我的東西輸出到控制檯和警報。結果並不好,因爲警報解僱了,但控制檯是空的 - 甚至沒有一個錯誤,這讓我想知道 - 什麼控制檯接收輸出?
function injectCode(fn){ // Executing an anonymous script
var script = document.createElement('script');
script.type = 'application/javascript';
script.textContent = '(' + fn + ')();';
document.documentElement.appendChild(script); // run the script
document.documentElement.removeChild(script); // clean up
}
var code = function(){
console.log('dom',window);
alert('code injected');
}
injectCode(code);
我也試過addEventListener
,與DOMAttrModified
DOMSubtreeModified
DOMNodeInserted
,在不改變當DOM Ajax響應完全解析,但都以失敗告終火DOM元素。
上午我試圖做不可能的事,以任何方式?
我通過內容腳本注入代碼,並且確實有打開DOM頁面的控制檯。你能解釋這對我有什麼幫助嗎?如果我注入DOM腳本ajax響應函數的重寫函數,那麼它將從擴展中斷,我將不得不使用類似於http://code.google.com/chrome/extensions/content_scripts.html#host這種類型的頁面通信打破了攔截Ajax響應的目的。解析DOM似乎是更好的解決方案。 – Kim
@Kim該帖子回答了有關控制檯的突出問題。你的問題使用了一個注入腳本(順便說一下,你沒有提及**腳本)。如果此答案與您的期望不符,請編輯該問題以更清楚。目前,您的問題的帖子甚至不符合標題。 –
我認爲標題匹配得很好。您的答案更關注如何將代碼注入DOM,我知道您可以從我的問題中包含的代碼中看到代碼。我需要'hook'到DOM腳本ajax響應處理程序,同時仍然與我的擴展進行通信。你的答案不包括這一點。 – Kim