2009-03-04 5 views
5

Gmailで動作するGreasemonkeyスクリプトを作成しようとしています。私は受信者リンクまたは更新リンクをクリックしたユーザーに反応するjavascriptを作成する方法を知っています。私の問題は、Gmailが新しい会話で定期的に受信トレイを更新するため、このイベントをキャプチャする方法がないことです。 JavaScriptの定期的なAjaxイベントをキャプチャする方法はありますか?Gmailの受信トレイを定期的にリフレッシュするAjaxイベントをキャプチャする方法

答えて

1

私は上記マイルズ優れた提案を試みたが、Gmailはすでに元を求めているので、残念ながら、それは動作しません。私はGreasemonkeyスクリプトでそれを変更する機会がある前に、setTimeout関数を呼び出してください。

私ができる唯一のことは、Gmailが受信トレイを定期的に更新するときに何らかの形で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の両方を置き換えようとしましたが、警告が表示されません。 GreasemonkeyスクリプトでGmailを置き換える前にGmailがすでにこれらの関数を呼び出しているのだろうかと思います。 –

+0

私は、GreasmonkeyスクリプトでsetTimeout関数とsetInterval関数を呼び出すことで機能することを検証しました。予想どおり、アラートが表示されます。私の問題は、Greasemonkeyスクリプトが実行される前にGmailがすでにsetTimeoutまたはsetIntervalを呼び出していたようです。 –

関連する問題