Cómo capturar el evento Ajax que actualiza periódicamente la bandeja de entrada de gmail

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Estoy intentando escribir un script de Greasemonkey que funciona con Gmail. Sé cómo crear un javascript que reacciona al usuario haciendo clic en el enlace de la Bandeja de entrada o en el enlace Actualizar. Mi problema es que Gmail actualiza periódicamente la bandeja de entrada con nuevas conversaciones y no tengo forma de capturar este evento. ¿Hay alguna forma de capturar eventos periódicos de Ajax en javascript?

¿Fue útil?

Solución 2

Probé la excelente sugerencia de Miles anterior, pero desafortunadamente no funciona porque Gmail ya ha llamado a la función setTimeout original antes de que tenga la oportunidad de cambiarla en mi script de Greasemonkey.

Lo único que puedo hacer es reaccionar de alguna manera a los cambios que Gmail realiza cuando actualiza periódicamente la bandeja de entrada. Descubrí que hay varios eventos relacionados con DOM que se activan cuando se agrega o elimina un nodo:

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

Como Gmail está actualizando el DOM con mis últimos correos electrónicos, puedo escuchar estos eventos DOM (estoy usando DOMNodeInserted) y reaccionar a los cambios.

No es elegante, pero funciona.

Otros consejos

Puede intentar reemplazar la función window.setTimeout (y posiblemente window.setInterval ) con sus propias funciones:

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);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top