Comment capturer l'événement Ajax qui actualise périodiquement la boîte de réception gmail

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

  •  03-07-2019
  •  | 
  •  

Question

J'essaie d'écrire un script Greasemonkey qui fonctionne avec Gmail. Je sais comment créer du javascript qui réagit lorsque l'utilisateur clique sur le lien Boîte de réception ou sur le lien Actualiser. Mon problème est que Gmail actualise régulièrement la boîte de réception avec de nouvelles conversations et je n'ai aucun moyen de capturer cet événement. Existe-t-il un moyen de capturer des événements périodiques Ajax en javascript?

Était-ce utile?

La solution 2

J'ai essayé l'excellente suggestion de Miles ci-dessus, mais malheureusement, cela ne fonctionne pas car Gmail a déjà appelé la fonction setTimeout d'origine avant que je puisse la modifier dans mon script Greasemonkey.

Je ne peux que réagir aux modifications apportées par Gmail lors de l'actualisation périodique de la boîte de réception. J'ai constaté qu'il y a plusieurs événements liés au DOM qui se déclenchent lorsqu'un noeud est ajouté ou supprimé:

http: //www.w3 .org / TR / DOM-Niveau-3-Evénements / events.html # event-DOMNodeInserted

Étant donné que Gmail met à jour le DOM avec mes derniers courriels, je peux écouter ces événements DOM (j'utilise DOMNodeInserted) et réagir aux modifications.

Ce n'est pas élégant, mais ça marche.

Autres conseils

Vous pouvez essayer de remplacer la fonction window.setTimeout (et éventuellement window.setInterval ) par vos propres fonctions:

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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top