के साथ ठीक से नहीं चलती है मुझे अपने प्रतिक्रिया पृष्ठों पर टिप्पणी करने के लिए टिप्पणी गिनती स्क्रिप्ट प्राप्त करने में एक समय का नरक रहा है। शुरू करने के लिए, वे <body>
टैग के नीचे, मेरी index.html फ़ाइल में स्क्रिप्ट डालने की सलाह देते हैं। मैंने यह किया है, और कोई परिणाम नहीं देखा।Disqus's count.js स्क्रिप्ट index.html में feedback.js वेबसाइट
<body>
<div id="app">
</div>
<script src="static/index.js"></script>
<script id="dsq-count-scr" src="//mtg-hunter.disqus.com/count.js" async></script>
</body>
मैं एक index.js फ़ाइल जो घटक सहित अपने सभी घटकों, लोड कर रहा है है (यह ResultComponent.js कॉल) जो मैं टिप्पणी गिनती में <span>
टैग करना चाहते हैं। <span>
टैग खुद को इस तरह दिखेगा:
var commentCount = <span className="disqus-comment-count" onClick={function() {this.setState({currentSelectedTab: 4})}.bind(this)}
\t \t \t data-disqus-identifier={idGoesHere}
\t \t \t style={{fontVariant:"small-caps"}}>0 Comments</span>
अभी तक, इतना आसान है। मैं किसी भी <a>
टैग का उपयोग नहीं कर रहा हूं इसलिए मुझे कहीं भी #disqus_thread
नहीं मिला है। जब मैं अपना पेज लोड करता हूं, तो मुझे उम्मीद है कि मेरी टिप्पणी बढ़ने की गिनती होगी, लेकिन ऐसी कोई किस्मत नहीं है। इसका परीक्षण करने के लिए, मैंने कच्ची गिनती, unaltered, कच्चे count.js स्क्रिप्ट से कॉपी किया (जो located here है)। इसके बाद मैंने इसे सीधे क्रोम के devtools कंसोल में चिपकाया, और यह काम किया; सभी प्रासंगिक टिप्पणी काउंटर उनके उचित मूल्यों पर गए।
संपादित करें: एक दिन बाद, अधिक प्रोडिंग; मैंने disqus.com डोमेन में वास्तविक कोड में ब्रेकपॉइंट्स जोड़े। स्क्रिप्ट टैग में स्क्रिप्ट सही समय पर ठीक चल रही है, सिवाय इसके कि यह गायब चर के अलावा जब यह displayCount() फ़ंक्शन में प्रवेश करती है। ऐसे कई चर हैं जिन्हें केवल मान नहीं दिए जाते हैं, इसलिए यह टिप्पणी संख्याओं में शामिल नहीं हो सकता है और यह हमेशा विफल हो जाता है। मुझे नहीं पता कि यह मेरे index.html के भीतर से क्यों कॉल किया जाता है, लेकिन जब मैं कच्चे count.js कोड को अपने कंसोल में पेस्ट नहीं करता हूं और वहां करता हूं। कोई विचार क्यों नहीं।
e.displayCount = function(b) {
for (var c, a, d, e = b.counts, b = b.text.comments; c = e.shift();)
if (a = j[c.id]) {
switch (c.comments) {
case 0:
d = b.zero;
break;
case 1:
d = b.one;
break;
default:
d = b.multiple
}
c = d.replace("{num}", c.comments);
a = a.elements;
for (d = a.length - 1; d >= 0; d--)
a[d].innerHTML = c
}
}
;
j
चर परिभाषित किया गया है:
स्पष्ट करने के लिए, इस प्रासंगिक कोड है। जब index.html से कॉल किया जाता है, j
अपरिभाषित है, तो यह पहले if
पर विफल रहता है। कॉलिंग यूआरएल दोनों परिस्थितियों में बिल्कुल समान है: http://mtg-hunter.disqus.com/count-data.js?1=19767&1=235597&1=373322&1=382310&1=382841&1=382866&1=383023&1=397543&1=397682&1=398434
। यह b
पैरामीटर देता है, और जब मैं स्थानीय रूप से स्क्रिप्ट चलाता हूं तो यह j
को परिभाषित करता है ताकि अगर असाइनमेंट ऑपरेटर काम कर सके (जो इसे करने का वास्तव में अजीब तरीका है, लेकिन ठीक है)।
संपादित फिर से: मैं कहना चाहिए कि मैं इस एक स्थानीय परीक्षण सर्वर (localhost:3000
), यकीन नहीं करता है, तो यह है कि एक अंतर नहीं करता है या पर कर रहा हूँ?
और संपादित करें: मेरे उपरोक्त प्रश्न का उत्तर 'नहीं' हो गया है। मैंने अपने सर्वर पर अपना कोड अपलोड किया और उत्पादन साइट ने यह भी दिखाया कि लिपि ठीक से नहीं चल रही थी। यह बेतुका है ... मैं अब तक विचारों से बाहर हूं।
फिर से संपादित करें: आंशिक सफलता ... मैंने इस कोड को परिणाम कॉम्पोनेंट में जोड़ा।js:
componentDidMount() {
\t DISQUSWIDGETS.getCount();
},
componentDidUpdate() {
\t DISQUSWIDGETS.getCount();
},
अच्छी खबर है; जब मैं पृष्ठ को रीफ्रेश करता हूं, तो यह सही टिप्पणी गिनती दिखाता है! हुर्रे! खराब समाचार: जब मैं पृष्ठ के उन हिस्सों को बदलता हूं जो परिणाम घटक को छिपाते हैं, और फिर इसे वापस लाते हैं (componentDidUpdate
ट्रिगर करते हैं), DISQUSWIDGETS.getCount()
कॉल काम नहीं करता है। इसे अभी भी बुलाया जाता है, लेकिन स्क्रिप्ट का displayCount
हिस्सा कभी नहीं करता है, इसलिए डीओएम को नई जानकारी के साथ कभी अपडेट नहीं किया जाता है। यह अभी भी वही तरीके से बुलाए जाने के बावजूद इस भयानक लिपि का एक और उदाहरण है ...
ऐसा लगता है कि रिस्पॉज आपके अपेक्षित संदर्भ में कुछ कर रहा है। क्या आप 'displayCount' को समायोजित कर सकते हैं जैसे कि आप अतिरिक्त तर्क के रूप में 'j' पास कर सकते हैं? – Ouroborus
नहीं, यह एक ऐसी स्क्रिप्ट है जो Disqus द्वारा लोड/बनाई गई है और यह mtg-hunter.disqus.com/count.js पर बैठती है। – IronWaffleMan
सबसे अच्छा समाधान नहीं है, ऐसा लगता है कि आप कोड को अपडेट कर सकते हैं। 'Count.js' लोड होने के बाद, अपने स्वाद के लिए अधिक फ़ंक्शन में' DISQUSWIDGETS.displayCount' असाइन करें। या यहां तक कि 'count.js' की स्थानीय प्रतिलिपि बनाएं और उसे संशोधित करें और उससे लिंक करें। कम से कम, यह डिबगिंग के साथ मदद कर सकता है। – Ouroborus