Domanda

Sto provando a scrivere uno script Greasemonkey che funziona con Gmail. So come creare javascript che reagisce all'utente facendo clic sul collegamento Posta in arrivo o sul collegamento Aggiorna. Il mio problema è che Gmail aggiorna periodicamente la posta in arrivo con nuove conversazioni e non ho modo di catturare questo evento. Esiste un modo per acquisire periodici eventi Ajax in javascript?

È stato utile?

Soluzione 2

Ho provato l'eccellente suggerimento di Miles sopra, ma sfortunatamente non funziona perché Gmail ha già chiamato la funzione setTimeout originale prima che io abbia la possibilità di cambiarlo nel mio script Greasemonkey.

L'unica cosa che posso fare è in qualche modo reagire alle modifiche apportate da Gmail quando aggiorna periodicamente la posta in arrivo. Ho scoperto che ci sono diversi eventi relativi al DOM che si attivano quando viene aggiunto o rimosso un nodo:

http: //www.w3 .org / TR / DOM-Level-3-Events / events.html # evento-DOMNodeInserted

Poiché Gmail sta aggiornando il DOM con le mie ultime e-mail, posso ascoltare questi eventi DOM (sto usando DOMNodeInserted) e reagire alle modifiche.

Non è elegante, ma funziona.

Altri suggerimenti

Potresti provare a sostituire la funzione window.setTimeout (e possibilmente window.setInterval ) con le tue funzioni:

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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top