2011-07-05 10 views
19

Estoy tratando de adjuntar una devolución de llamada a la acción ajax "Enviar correo" en Gmail. He podido diferenciar una acción Enviar correo de otras acciones AJAX basadas en la carga útil de la solicitud, pero no he podido conectarme a la llamada AJAX real.Intercepción enviar solicitud de correo AJAX en Gmail

Hasta ahora, he intentado reemplazar el método XMLHttpRequest.open() como se detalla en here. Eso no funcionó. También intenté sobreescribir XMLHttpRequest.send(). También falló

¿Alguna idea? Muchas gracias de antemano.

+0

¿Estás creando un complemento, un marcador o qué? – Gerben

+0

Creando una extensión de Chrome. Usar scripts de contenido para inyectar el javascript. –

+0

¿Lograste que funcione? Estoy enfrentando el mismo problema. –

Respuesta

8

El truco de Google es que envían la solicitud desde dentro de un iframe que tiene su propio entorno de JavaScript. Sin embargo, ya que se carga desde el mismo origen que el padre, todavía se puede manipular fácilmente, incluso desde la consola del navegador:

[].slice.apply(document.querySelectorAll('iframe')).forEach(function (iframe) { 
    try { 
     var xhrProto = iframe.contentWindow.XMLHttpRequest.prototype; 
     var origOpen = xhrProto.open; 
     xhrProto.open = function() { 
      console.log('DO SOMETHING', arguments); 
      return origOpen.apply(this, arguments); 
     }; 
    } catch (e) {} 
}); 

Es posible que desee utilizar un MutationObserver para detectar iframes recién añadidos de forma fiable.

Cuestiones relacionadas