2009-03-04 77 views
5

我正在嘗試編寫一個與Gmail一起使用的Greasemonkey腳本。我知道如何創建JavaScript,以響應點擊收件箱鏈接或刷新鏈接的用戶。我的問題是,Gmail定期刷新收件箱新的對話,我無法捕獲此事件。有沒有什麼辦法來捕捉JavaScript中的週期性Ajax事件?如何捕獲定期刷新Gmail收件箱的Ajax事件

回答

1

我試過萬里上面很好的建議,但遺憾的是它不工作,因爲Gmail已經叫原setTimeout函數,然後我有機會在我的Greasemonkey腳本中更改它。

我唯一能做的就是以某種方式對Gmail定期刷新收件箱時所做的更改作出反應。我發現有一些火的時候,一個節點被添加或刪除一些DOM相關事件:

http://www.w3.org/TR/DOM-Level-3-Events/events.html#event-DOMNodeInserted

由於Gmail的更新與我的最新的電子郵件的DOM,我可以聽這些DOM事件(我使用DOMNodeInserted)並對變化做出反應。

這不是優雅,但它的作品。

1

,你可以嘗試用自己的函數替換window.setTimeout功能(也可能是window.setInterval):

window._setTimeout = window.setTimeout; 
window.setTimeout = function(func, delay) { 
    return window._setTimeout(function() { 
     // Your code goes here, before the client function is called 
     alert('A timeout event just fired!'); 

     if (typeof func == 'string') { 
      eval(func); 
     } else { 
      func(); 
     } 
    }, delay); 
} 
+0

這是一個好主意。不幸的是,到目前爲止它不適合我。我試過替換window.setTimeout和window.setInterval,我沒有收到任何警報。我想知道Gmail在Greasemonkey腳本中替換它們之前是否已經調用了這些函數。 – 2009-03-05 15:12:15

相關問題