【问题标题】:Disqus not working with ajaxDisqus 无法使用 ajax
【发布时间】:2013-03-14 18:52:01
【问题描述】:

我曾尝试在我的站点中使用 Diqus 评论系统,使用 ajax 加载文章和 cmets,但无法正常工作。

我使用 jQuery,并使用“.load”操作加载整篇文章(包括 cmets)。

对于这种情况,我正在使用他们在其网站中提供的代码: http://docs.disqus.com/help/85/

DISQUS.reset({
  reload: true,
  config: function () {  
    this.page.identifier = "newidentifier";  
    this.page.url = "http://example.com/#!newthread";
  }
});

我真的不知道我做错了什么。我的代码是这个:

$(".cargaAqui").load("http://"+ document.domain + "/myArticle"+id, function() {
DISQUS.reset({
reload: true,
config: function () {  
    this.page.identifier = "myArticle" + id;  
    this.page.url = 'http://' + document.domain +'/view-'+ id+'#!newthread';
}
 });    

知道有什么问题吗? 谢谢

【问题讨论】:

  • 一个有价值的 javascript 调试工具是 Firefox 的 Firebug 扩展。你试过了吗?
  • 是的,我做到了。但我看不出问题出在哪里。我已经按照他们在他们的网站上所说的一切。有人用ajax试过吗?
  • 好的,我亲自询问了那里的一位工人,我得到了答案。 Disqus 还不支持 AJAX。也许很快。
  • @Steve - 我遇到了同样的问题,所以在 disqus 网站上他们有这个代码,但你怎么能让它工作?你有没有更进一步?

标签: ajax disqus


【解决方案1】:

我已经制作了一个基本模板,使用 DISQUS 2012 cmets 通过 jquery-pjax 加载 ajax。

DISQUS 2012 还不能与 DISQUS.reset 一起使用,但他们正在努力解决。

如果您需要 DISQUS.reset 在 ajax 加载内容后重新加载 cmets,您需要在 DISQUS admin 中关闭 2012 功能。

[更新:] DISQUS.reset 已在 DISQUS 2012 中实施,因此上述解决方法并不是真正必要的。但是,推送状态与 DISQUS.reset 结合在一起工作得非常好。

【讨论】:

  • 仅供参考,您的代码存在元素内存泄漏。您需要调整 Disqus 代码,以便在导航到每个页面时删除旧的脚本元素。它真的很容易看到:打开一个类似 firebug 的应用程序并观察 disqus 脚本标签的累积。
【解决方案2】:

我同意亚当的观点。 Disqus 脚本标签会累积。我做到了:

var head = document.getElementsByTagName('head')[0];
head.removeChild(head.lastElementChild);

把它放在 DISQUS 函数之前。

它非常适合我,因为 Disqus 脚本标签位于 head 的末尾。我在 Chrome 中再次运行 firebug,Disqus 脚本标签不再累积。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    相关资源
    最近更新 更多