2012-07-01 6 views
6

disqusフォームが更新を取得した後、再計算を行う必要があります。新しいコメント、いくつかの名前を付けるだけのエラーメッセージ。本質的に、Disqus iframeを垂直方向に展開するイベントです。 APIをチェックしましたが、公開イベントは見つかりませんでした。イベントは公然とアクセス可能ではないようです。最初の質問は、Disqusに公開イベントがありますか?Disqusには公開イベントがありますか?

Disqusのイベントにアタッチする方法がない場合、DisutusのものがiFrame内にあることを考慮して、MutationEventが私のトリックをするのだろうか?

+0

答えを見つけたことがありますか? :D – TimPietrusky

+0

残念ながら、ティム。 – spliter

答えて

1

私は特にディスカスの公開イベントについてはよく分からないんだけど、あなただけのiframeの高さの変化を監視する必要がある場合は、ここでは一つの方法です:

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

は確かに、それは基本的にハックです。しかし、それは動作するはずです!私はここから、これまで

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

が出ているベスト

+0

ええ、これは確かにハックです。しかも私にとってはそれほどエレガントではない - 高さを調整するのが1秒遅れることは、本当に私が望むものではない。特にiframeが変更されたかどうかにかかわらず、毎秒ポーリングする計算能力を使用するためです。しかし、とにかくスニペットに感謝します。 – spliter

+0

長い間乾燥していると、うれしいかもしれません。この解決法は有用である。 – skobaljic

1

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

はクロームコンソールでconsole.log(DISQUS)を行うには、Disqusのオブジェクトを示しており、

_callbacks: Object 
    switches.changed: Array[2] 
    window.click: Array[2] 
    window.hashchange: Array[2] 
    window.resize: Array[2] 
    window.scroll: Array[2] 
を言及した他のコールバックがあります

およびonおよびtrigger方法

0

まあ、彼らは(私が言うことができる限り)公開された出来事は記録されていません。しかし、アプリケーションは親ウィンドウで多くのイベントをトリガしています。それで、彼らに耳を傾けて何らかの行動をとることは可能です。次のスニペットでこれを行うことができます:

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

ウェブキットベースのブラウザでは、うまく動作します。 firefoxにはいくつかの問題があるかもしれません。 IEを使って...まあ、私は手にそれをテストするためのIEがありません。

関連する問題