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
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.
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);
}
- 1. JSF, actualiza periódicamente un componente con ajax?
- 2. noname en mi bandeja de entrada de Gmail
- 3. Buscar la bandeja de entrada de Bluetooth
- 4. Capturar cancelar evento en el tipo de entrada = archivo
- 5. Cómo capturar el evento System.exit?
- 6. PHP imap_search no detecta todos los mensajes en la bandeja de entrada de gmail
- 7. jQuery: cómo capturar el evento de cambio de la entrada [type = 'checkbox'] si se programó programáticamente?
- 8. referencia a la bandeja de entrada adicional
- 9. accediendo a mi bandeja de entrada de gmail a través del código php
- 10. lectura más rápida de la bandeja de entrada en Java
- 11. Capturar evento clave para retroceso
- 12. Qt cómo capturar el evento que indica que todos los elementos de la GUI están listos
- 13. Cómo capturar el navegador cerrar evento?
- 14. ¿Alguna solución posible para capturar la entrada/salida del proceso?
- 15. Capturar el evento cercano de la ventana emergente en JavaScript
- 16. cómo capturar el evento clave desde una vista?
- 17. Eliminar un sms de la bandeja de entrada
- 18. Guardar/Crear MMS en la bandeja de entrada de Android
- 19. Capturar ventana cerrar evento
- 20. Administración de la bandeja de entrada (en Outlook)
- 21. Capturar entrada en Linux
- 22. ¿Cómo evitar que los SMS vayan a la bandeja de entrada en Android?
- 23. Capturar evento en el navegador cerrado
- 24. ¿Cómo puedo capturar el evento de clic derecho en JavaScript?
- 25. Cómo capturar la entrada de micrófono en VLC?
- 26. ¿Capturar el evento "desplazarse hacia abajo"?
- 27. ¿Cómo abrir la bandeja de entrada predeterminada del correo desde el código de Android?
- 28. Capturar evento de salida de aplicación - WinForms
- 29. jQuery .keyPress() - ¿Cómo obtener el valor de la entrada que desencadenó el evento?
- 30. Volviendo a una entrada de pushState que utilizó ajax
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. –
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. –