Como capturar o evento Ajax que atualiza periodicamente a caixa de entrada do Gmail
-
03-07-2019 - |
Pergunta
Estou tentando escrever um script Greasemonkey que funcione com o Gmail. Eu sei como criar JavaScript que reage ao usuário clicando no link da caixa de entrada ou no link de atualização. Meu problema é que o Gmail atualiza periodicamente a caixa de entrada com novas conversas e não tenho como capturar este evento. Existe alguma maneira de capturar eventos periódicos do Ajax em JavaScript?
Solução 2
Eu tentei a excelente sugestão de Miles acima, mas infelizmente ela não funciona porque o Gmail já chamou a função original do setTimeout antes de ter a chance de alterá -lo no meu roteiro Greasemonkey.
A única coisa que posso fazer é reagir de alguma forma às mudanças que o Gmail faz quando atualiza periodicamente a caixa de entrada. Descobri que existem vários eventos relacionados à DOM que disparam quando um nó é adicionado ou removido:
http://www.w3.org/tr/dom-level-3-events/events.html#event-domnodeInsert
Como o Gmail está atualizando o DOM com meus e -mails mais recentes, posso ouvir esses eventos DOM (estou usando o DomNodeInsert) e reagir às alterações.
Não é elegante, mas funciona.
Outras dicas
Você pode tentar substituir o window.setTimeout
função (e possivelmente window.setInterval
) com suas próprias funções:
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);
}