Как перехватить событие Ajax, которое периодически обновляет почтовый ящик gmail
-
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);
}