Перехватить отправку почты AJAX запросом в Gmail - PullRequest
19 голосов
/ 05 июля 2011

Я пытаюсь прикрепить обратный вызов к действию ajax «Отправить почту» в Gmail. Мне удалось отличить действие «Отправить письмо» от других действий AJAX на основе полезной нагрузки запроса, но я не смог подключиться к фактическому вызову AJAX.

До сих пор я пытался использовать переопределение метода XMLHttpRequest.open (), как подробно здесь . Это не сработало. Я также попытался переопределить XMLHttpRequest.send (). Также не удалось.

Есть мысли? Большое спасибо заранее.

1 Ответ

8 голосов
/ 04 мая 2015

Хитрость Google заключается в том, что они отправляют запрос изнутри iframe, который имеет свою собственную среду JavaScript.Однако, поскольку он загружен из того же источника, что и родительский, вы все равно можете легко управлять им даже из консоли браузера:

[].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) {}
});

Возможно, вы захотите использовать MutationObserver для надежного обнаружения вновь добавленных фреймов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...