我加载并显示DISQUS剪切,在AJAX提供的页面上轻松地重新加载
var id = this.getIdentifier(),
disqus_shortname = 'myportal',
disqus_identifier = id,
disqus_title = id,
disqus_url = "http://" + document.domain + "/#!" + id;
if ($('head script[src="http://' + disqus_shortname + '.disqus.com/embed.js"]').length == 0) {
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0]).appendChild(dsq);
})();
}
if (typeof DISQUS != "undefined") {
DISQUS.reset({
reload: true
});
}
然而,试图在其他网址中加载相同的线程(在相同的位置)yelds blank(new)disqusion。
尝试使用以下方法在两者上加载相似的线程:
var id = "Disqusion about coding";
DISQUS.reset({
reload: true,
config: function () {
this.page.identifier = id;
this.page.url = "http://myportal.com/#!" + id;
}
});
给予单独的新威胁。
答案 0 :(得分:1)
如果您完全关闭URL并仅使用标识符,则此代码似乎有效。此外,disqus_shortname
disqus_identifier
和disqus_url
应该是window
上下文的一部分。 (我无法在任何地方找到这个,但我在模块中发现了一些奇怪的边缘情况)
var disqus_shortname = 'myportal',
disqus_identifier = 'UNIQUE_IDENTIFER';
if ($('head script[src="http://' + disqus_shortname + '.disqus.com/embed.js"]').length == 0) {
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0]).appendChild(dsq);
})();
}
if (typeof DISQUS != "undefined") {
DISQUS.reset({
reload: true
});
}
http://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables
答案 1 :(得分:0)
我自己用计时器解决了这个问题 - 正在检查dsq
对象,一旦发现我处理它并停止计时器。代码参考:
//
//
//
this.getIdentifier = function () {
var identifier = $(sel_product).val() + '-' + $(sel_model).val();
identifier = identifier.replace(/^\s+|\s+$/g, '').split(' ').join('_');
return identifier;
};
//
//
//
this.loadDisqus = function () {
var timerID = 'DisqusComments.loadDisqus';
if ($(__selector_DisqusBox).length > 0) {
var id = inst.getIdentifier(),
disqus_shortname = 'shortnameid',
disqus_identifier = id,
disqus_title = id,
disqus_url = "http://" + document.domain + "/#!" + id;
Utilities.handleTimedEvent(timerID, callself(this, function () { disqusReset(); }), null, 100);
if ($('body script[src="http://' + disqus_shortname + '.disqus.com/embed.js"]').length == 0) {
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = false;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
}
}
function disqusReset() {
if (typeof DISQUS != 'undefined') {
DISQUS.reset({
reload: true,
config: function () {
this.page.identifier = disqus_identifier;
this.page.url = disqus_url;
this.page.title = disqus_title;
}
});
Utilities.clearTimedEvent(timerID);
}
}
disqusReset();
};