Wie das Ajax Ereignis erfassen, die in regelmäßigen Abständen die Google Mail-Posteingang aktualisiert

StackOverflow https://stackoverflow.com/questions/612576

  •  03-07-2019
  •  | 
  •  

Frage

Ich versuche, einen Greasemonkey-Skript zu schreiben, die mit Google Mail funktioniert. Ich weiß, wie Javascript erstellen, die auf dem Link Posteingang oder die Refresh Link zum Benutzer durch Klick reagiert. Mein Problem ist, dass Google Mail den Posteingang mit neuen Gespräche in regelmäßigen Abständen aktualisiert, und ich habe keine Möglichkeit, dieses Ereignis einzufangen. Gibt es eine Möglichkeit periodische Ajax Ereignisse in Javascript zu erfassen?

War es hilfreich?

Lösung 2

habe ich versucht, Miles' ausgezeichneten Vorschlag oben, aber leider funktioniert es nicht, weil Google Mail bereits die ursprüngliche setTimeout-Funktion aufgerufen hat, bevor ich eine Chance habe, es in meinem Greasemonkey-Skript zu ändern.

Das einzige, was ich tun kann, ist irgendwie auf die Veränderungen reagieren, dass Google Mail macht, wenn sie in regelmäßigen Abständen den Posteingang aktualisiert. Ich fand, dass es mehrere DOM bezogenen Ereignisse, die ausgelöst wird, wenn ein Knoten hinzugefügt oder entfernt wird:

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

Da Gmail das DOM mit meinen aktuellen E-Mail aktualisiert, kann ich für diese DOM-Ereignisse hören (Ich verwende DOMNodeInserted) und auf die Veränderungen reagieren.

Es ist nicht elegant, aber es funktioniert.

Andere Tipps

Sie könnten versuchen, die window.setTimeout Funktion (und möglicherweise window.setInterval) mit Ihrer eigenen Funktion zu ersetzen:

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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top