Как перехватить событие Ajax, которое периодически обновляет почтовый ящик gmail

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

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь написать скрипт Greasemonkey, который работает с Gmail. Я знаю, как создать JavaScript, который реагирует на то, что пользователь нажимает на ссылку «Входящие» или ссылку «Обновить». Моя проблема в том, что Gmail периодически обновляет входящие сообщения новыми разговорами, и у меня нет возможности записать это событие. Есть ли способ захвата периодических событий Ajax в JavaScript?

Это было полезно?

Решение 2

Я попробовал отличное предложение Майлза выше, но, к сожалению, оно не работает, потому что Gmail уже вызвал оригинальную функцию setTimeout, прежде чем я смог изменить ее в своем скрипте Greasemonkey.

Единственное, что я могу сделать, - это как-то реагировать на изменения, которые вносит Gmail, когда он периодически обновляет входящие. Я обнаружил, что есть несколько связанных с DOM событий, которые запускаются при добавлении или удалении узла:

http: //www.w3 .org / TR / DOM-Level-3-Events / events.html # событийно-DOMNodeInserted

Поскольку Gmail обновляет DOM моими последними электронными письмами, я могу прослушивать эти события DOM (я использую DOMNodeInserted) и реагировать на изменения.

Это не элегантно, но работает.

Другие советы

Вы можете попробовать заменить функцию window.setTimeout (и, возможно, window.setInterval ) своими собственными функциями:

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);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top