2009-03-04 12 views
5

Estoy tratando de escribir un script de Greasemonkey que funcione con Gmail. Sé cómo crear javascript que reacciona al usuario haciendo clic en el enlace 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 Ajax periódicos en javascript?Cómo capturar el evento Ajax que actualiza periódicamente la bandeja de entrada de gmail

Respuesta

1

me trataron excelente sugerencia de Miles anterior, pero por desgracia no funciona debido a Gmail ya ha pedido el original setTimeout function antes de que tenga la oportunidad de cambiarlo en mi script Greasemonkey.

Lo único que puedo hacer es reaccionar de alguna manera a los cambios que hace Gmail cuando actualiza periódicamente la bandeja de entrada. He encontrado que hay varios eventos relacionados con el DOM que se activan cuando se añade o elimina un nodo:

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

Desde Gmail se actualiza el DOM con mis últimos mensajes de correo electrónico, que puede detectar estos eventos DOM (soy usando DOMNodeInserted) y reacciona a los cambios.

No es elegante, pero funciona.

1

usted podría 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); 
} 
+0

Esta es una gran idea. Desafortunadamente, no me funciona hasta ahora. He intentado reemplazar tanto window.setTimeout como window.setInterval y no recibo ninguna alerta. Me pregunto si Gmail ya ha llamado a estas funciones antes de reemplazarlas en el script de Greasemonkey. –

+0

Incluso probé que reemplazar las funciones setTimeout y setInterval funciona llamándolos en el script Greasmonkey. Como esperaba, veo alertas. Mi problema parece ser que Gmail ya ha llamado a setTimeout o setInterval antes de que se ejecute el script de Greasemonkey. –

Cuestiones relacionadas