JQuery скрипт для мониторинга добавления комментариев Disqus? - PullRequest
2 голосов
/ 25 апреля 2011

Я хотел бы написать небольшой скрипт для отслеживания комментариев disqus, добавленных на страницу, и запускать некоторые обратные вызовы уведомлений при добавлении новых комментариев.

Самый простой способ сделать это - периодически отслеживать содержимое # dsq-comments div и запускать обратный вызов всякий раз, когда изменяется его HTML-содержимое.

Хотя это сработает, мне интересно, есть ли какие-нибудь более чистые методы?


Редактировать: По предложению @Pekka я реализовал обратный вызов onNewComment на моей странице , и он прекрасно работает. Это было одной из моих главных проблем при интеграции Disqus на мой сайт , и теперь у меня есть работоспособное решение.

function disqus_config() {
  this.callbacks.onNewComment = [function() {
       $.get("/notifications/newcomment?...", function(data) {
       });
  }];
}

Ответы [ 2 ]

4 голосов
/ 25 апреля 2011

Кажется, что есть onNewComment обратный вызов.См. Как я могу записать комментарии Disqus в своем собственном аналитическом инструменте?

Этот пост отлично справляется с документированием.

1 голос
/ 13 ноября 2013

Действия комментирования Disqus можно записать с помощью обратных вызовов, используя:

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

Где вы замените trackComment (); вашей собственной функцией.

Здесьпример динамической загрузки комментариев Disqus с использованием JavaScript, где вы можете найти функцию Discus_config , которая будет запускаться при добавлении нового комментария.

var loadDisqus = function() {
  window.disqus_identifier = 'your thread id';
  window.disqus_shortname = 'disqus_shortname';
  window.disqus_url = 'http://your_domain.com/path';
  window.disqus_title ='page title';
  window.disqus_config = function() {
    this.callbacks.onNewComment = [function() { myFunction() }];
  };

  (function() {
    var dsq = document.createElement('script');
    dsq.type = 'text/javascript';
    dsq.async = true;
    dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
    (document.getElementsByTagName('head')[0] ||
      document.getElementsByTagName('body')[0]).appendChild(dsq);
  })();

};
...