Wie das Ajax Ereignis erfassen, die in regelmäßigen Abständen die Google Mail-Posteingang aktualisiert
-
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?
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);
}