2012-07-01 14 views
6

Necesito realizar algunos cálculos después de que la forma del disqus obtiene una actualización. Un nuevo comentario, mensaje de error solo por nombrar algunos. En esencia, cualquier evento que haga que el iframe Disqus se expanda verticalmente. Comprobé la API, pero no encontré ningún evento público. Parece que los eventos no son públicamente accesibles atm. Entonces, la primera pregunta es: ¿tiene Disqus algún evento público para adjuntar?¿Disqus tiene eventos públicos para adjuntar?

El segundo sería: si no tengo forma de vincularme a los eventos de Disqus, me pregunto si MutationEvent sería el truco para mí teniendo en cuenta que las cosas de Disqus están dentro de un iFrame.

+0

¿Alguna vez ha encontrado la respuesta? : D – TimPietrusky

+0

Desafortunadamente no, Tim. – spliter

Respuesta

1

no estoy seguro acerca de los eventos públicos para Disqus en particular, pero si lo que necesita para controlar los cambios en la altura de un marco flotante, aquí hay una manera:

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); 

De acuerdo, es básicamente un truco. ¡Pero debería funcionar!

+0

Sí, esto es un hack de hecho. Además, no es tan elegante como yo, la demora en el ajuste de la altura no es realmente lo que quiero. Especialmente porque utilizaré la potencia de cómputo para sondear cada segundo, sin importar si el iframe ha sido cambiado o no. Pero de todos modos, gracias por el fragmento. – spliter

+0

Cuando está seco durante mucho tiempo, el saludo puede ser bienvenido. Esta solución puede ser útil. – skobaljic

1

El mejor que he encontrado hasta el momento

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

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

Haciendo un console.log(DISQUS) en la consola de Chrome muestra el objeto Disqus, y hay otros servicios repetidos mencionados

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

y on y trigger métodos

0

Bueno, no tienen ningún evento público documentado (hasta donde puedo decir). Pero la aplicación está desencadenando una gran cantidad de eventos en su ventana principal. Entonces es posible escucharlos y hacer algunas acciones. Usted puede hacer eso con siguiente fragmento:

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); 

En los navegadores basados ​​en webkit funciona muy bien. Con Firefox podría haber algunos problemas. Con IE ... bueno, no tengo ningún IE disponible para probarlo.

Cuestiones relacionadas