Disqus не работает с ajax

Я пытался использовать систему комментариев Diqus на своем сайте, используя ajax для загрузки статьи и комментариев, но не смог заставить ее работать.

Я использую jQuery и загружаю всю статью (включая комментарии) с помощью действия «.load».

Я использую код, который они предоставляют на своем сайте для этих случаев: 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';
}
 });    

Есть идеи, что случилось? Спасибо


person Alvaro    schedule 17.03.2012    source источник
comment
Ценным инструментом для отладки javascript является расширение Firebug для Firefox. Вы уже пробовали это?   -  person Jeremy Harris    schedule 17.03.2012
comment
Да, я сделал это. Но я не вижу, где проблема. Я следил за всем, что они говорят на своем сайте. Кто-нибудь пробовал это с ajax?   -  person Alvaro    schedule 18.03.2012
comment
Хорошо, я лично спросил одного из рабочих и получил ответ. Disqus пока не поддерживает AJAX. Может быть, скоро.   -  person Alvaro    schedule 23.03.2012
comment
@Steve - у меня те же проблемы, поэтому на сайте disqus есть этот код, но как заставить его работать ?? ты продвинулся дальше?   -  person raklos    schedule 19.04.2012


Ответы (2)


Я сделал базовый шаблон с рабочими комментариями DISQUS 2012, загружаемыми с помощью ajax через jquery-pjax.

DISQUS 2012 пока не работает с DISQUS.reset, но над этим работают.

Если вам нужен DISQUS.reset для перезагрузки комментариев после загрузки контента с помощью ajax, вам нужно отключить функции 2012 в панели администратора DISQUS.

[ОБНОВЛЕНИЕ:] DISQUS.reset с тех пор был реализован в DISQUS 2012, поэтому обходной путь, описанный выше, на самом деле не нужен. Тем не менее, push-состояние в сочетании с DISQUS.reset отлично работает вместе.

person nverba    schedule 03.07.2012
comment
К вашему сведению, в вашем коде есть утечка памяти элемента. Вам нужно настроить код Disqus так, чтобы вы удаляли старые элементы скрипта при переходе на каждую страницу. Это действительно легко увидеть: откройте приложение, похожее на firebug, и посмотрите, как накапливаются теги сценария disqus. - person Adam Gent; 07.12.2012

Я согласен с Адамом. Теги скриптов Disqus накапливаются. Я это сделал :

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

Поместите его непосредственно перед функцией DISQUS.

У меня это отлично работает, потому что тег сценария Disqus находится в конце заголовка. Я снова запускаю firebug в Chrome, и теги сценариев Disqus больше не накапливаются.

person Karim Duran    schedule 28.01.2013