2012-07-01 7 views
6

मुझे डिसकस फ़ॉर्म को अपडेट होने के बाद कुछ पुनः गणना करने की आवश्यकता है। एक नई टिप्पणी, कुछ नाम देने के लिए त्रुटि संदेश। संक्षेप में किसी भी घटना जो Disqus iframe लंबवत विस्तार का कारण बनती है। एपीआई की जांच की, लेकिन कोई सार्वजनिक घटना नहीं मिली। ऐसा लगता है कि घटनाएं सार्वजनिक रूप से पहुंच योग्य नहीं हैं। तो पहला सवाल यह है - क्या Disqus के साथ संलग्न करने के लिए कोई सार्वजनिक घटना है?क्या डिस्कस के पास सार्वजनिक घटनाएं संलग्न हैं?

दूसरा होगा - अगर मेरे पास Disqus से घटनाओं से जुड़ने का कोई तरीका नहीं है तो मुझे आश्चर्य होगा कि MutationEvent मेरे लिए यह चाल कर रहा है कि Disqus सामान iFrame के भीतर है?

+0

क्या आपको कभी जवाब मिला है? : डी – TimPietrusky

+0

दुर्भाग्य से नहीं, टिम। – spliter

उत्तर

1

मैं विशेष रूप से Disqus के लिए सार्वजनिक घटनाओं के बारे में यकीन नहीं है, लेकिन अगर आप सिर्फ एक 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); 

दी है, यह मूल रूप से एक हैक है। लेकिन यह काम करना चाहिए!

+0

हाँ, यह वास्तव में एक हैक है। इसके अलावा मेरे लिए बहुत ही सुरुचिपूर्ण नहीं है - ऊंचाई समायोजित करने में 1s देरी वास्तव में मैं नहीं चाहता हूं। खासकर जब से मैं प्रत्येक सेकेंड में मतदान करने के लिए कंप्यूटिंग पावर का उपयोग करूंगा, इससे कोई फर्क नहीं पड़ता कि आईफ्रेम बदल गया है या नहीं। लेकिन स्निपेट के लिए धन्यवाद। – spliter

+0

जब यह लंबे समय तक सूखा होता है, तो जय का स्वागत किया जा सकता है। यह समाधान उपयोगी हो सकता है। – skobaljic

1

बेस्ट मैं यहाँ से अब तक

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

के साथ आए हैं: 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); 

वेबकिट आधारित ब्राउज़र में यह ठीक काम करता है। फ़ायरफ़ॉक्स के साथ कुछ समस्याएं हो सकती हैं। आईई के साथ ... अच्छा, मेरे पास परीक्षण करने के लिए हाथ पर कोई आईई नहीं है।

संबंधित मुद्दे