2013-01-10 47 views
1

我正在使用Google Chrome瀏覽器擴展程序,爲經常訪問的網站提供一些附加功能,如果有的話,我會再次嘗試使腳本運行AJAX請求成功。由於網站的性質,這是必要的。

繼續:我想要做的是簡單地說,只要AJAX請求成功就觸發一個函數。因此,我塑造的追隨者,並運行它在控制檯,而相關網站:

$(document).ajaxSuccess(function() { 
    console.log('AJAX success'); 
}); 

我然後繼續使用該網站每一次新的內容是通過AJAX來我確實被得到它確認裝至今爲止都很好。

然後,我繼續前進,開始將我所有的各種零碎拼湊在一起,使它成爲一個適當的Chrome擴展。一切仍然有效保存一件事:當.ajaxSuccess位位於內容腳本中時(我確定已正確執行,等等),網站上的AJAX請求不再觸發它。

我已經嘗試瞭解它,但我沒有太多的運氣。我覺得可能擴展需要一些特殊權限來訪問AJAX相關的東西,儘管我不知道這可能是什麼。由於延長目前的權限如下:

"permissions": [ 
    "storage", "tabs", "http://website.com/*" 
] 
+0

這是問題[執行環境(HTTP的問題: //developer.chrome.com/extensions/content_scripts.html#execution-environment) - 頁面上的Ajax成功回調列表與內容腳本中的回調列表不同。 – apsillers

回答

3

我最終塑造一個有點不愉快的解決辦法類似於此:

var DOMTimeout = null; 
    $('.class').bind('DOMNodeInserted', function() { 
     if(DOMTimeout) 
      clearTimeout(DOMTimeout); 

    DOMTimeout = setTimeout(function() { console.log('AJAX probably added something'); }, 150); 
}); 
相關問題