2012-07-01 7 views
6

Devo eseguire alcuni ricalcoli dopo che il modulo disqus ottiene un aggiornamento. Un nuovo commento, un messaggio di errore solo per citarne alcuni. In pratica qualsiasi evento che fa in modo che l'iframe di Disqus si espanda verticalmente. Controllata l'API, ma non ha trovato eventi pubblici. Sembra che gli eventi non siano pubblicamente accessibili. Quindi la prima domanda è: su Disqus ci sono eventi pubblici da allegare?Does Disqus ha eventi pubblici a cui allegare?

Il secondo sarebbe - se non ho modo di allegare agli eventi da Disqus mi chiedo MutationEvent fare il trucco per me tenendo conto che roba Disqus è all'interno di un iFrame?

+0

Hai mai trovato la risposta? : D – TimPietrusky

+0

Purtroppo no, Tim. – spliter

risposta

1

io non sono sicuro di eventi pubblici per Disqus in particolare, ma se avete solo bisogno per monitorare i cambiamenti all'altezza di un iframe, Ecco un modo:

var iframe = document.getElementById('myIframe'); 
var iframeHeight = iframe.clientHeight; 

setInterval(function() { 
    if(iframe.clientHeight != iframeHeight) { 
     // My iframe's height has changed - do some stuff! 

     iframeHeight = iframe.clientHeight; 
    } 
}, 1000); 

Certo, è fondamentalmente un hack. Ma dovrebbe funzionare!

+0

Sì, questo è un vero colpo. Inoltre non molto elegante come per me - 1s ritardo nella regolazione dell'altezza non è proprio quello che voglio. Soprattutto perché userò la potenza di calcolo per sondare ogni secondo, indipendentemente dal fatto che l'iframe sia stato modificato o meno. Ma grazie per lo snippet comunque. – spliter

+0

Quando è asciutto per un lungo periodo, la grandine potrebbe essere gradita. Questa soluzione può essere utile. – skobaljic

1

migliori sono venuto in mente finora

function disqus_config() { 
    this.callbacks.onNewComment = [function() { trackComment(); }]; 
} 

da qui: http://help.disqus.com/customer/portal/articles/466258-how-can-i-capture-disqus-commenting-activity-in-my-own-analytics-tool-

Facendo un console.log(DISQUS) nella console Chrome mostra l'oggetto Disqus, e ci sono altri callback menzionati

_callbacks: Object 
    switches.changed: Array[2] 
    window.click: Array[2] 
    window.hashchange: Array[2] 
    window.resize: Array[2] 
    window.scroll: Array[2] 

e on e trigger metodi

0

Beh, non hanno alcun evento pubblico documentato (per quanto posso dire). Ma l'applicazione sta attivando un sacco di eventi sulla sua finestra principale. Quindi è possibile ascoltarli e fare alcune azioni. È possibile farlo con seguente frammento di codice:

window.addEventListener('message', function (event) { 
    // if message is not from discus frame, leap out 
    if (event.origin != 'https://disqus.com' && event.origin != 'http://disqus.com') return; 

    // parse data 
    var data = JSON.parse(event.data); 

    // do stuff with data. type of action can be detected with data.name 
    // property ('ready', 'resize', 'fakeScroll', etc) 
}, false); 

Nel browser WebKit base funziona bene. Con Firefox ci potrebbero essere alcuni problemi. Con IE ... beh, non ho alcun IE a disposizione per testarlo.

Problemi correlati