Вопрос:

Disqus не срабатывает при нажатии кнопки

javascript jquery html disqus

50 просмотра

1 ответ

106 Репутация автора

У кого-нибудь есть опыт работы с Disqus? Я добавляю кнопки на существующий веб-сайт, и когда кнопка нажата, она должна запускать комментарии для обсуждения.

В начале это бег

function insertdisqus(){
  var dsq = document.createElement('script'); 
  dsq.type = 'text/javascript'; 
  dsq.async = true;
  dsq.src = 'https://myforum.disqus.com/embed.js';
  $('head').append(dsq);

}

тогда,

var button = document.createElement("a");
  button.setAttribute("id", "diqus");
  button.innerHTML = "Discussion";
  button.addEventListener('click', loaddisqus);

function loaddisqus(e){
  parent_element = $(this).parent().parent();
  next_element = parent_element.next();
  subjectcode = next_element.attr('data-subjectcode');

  var disqus_identifier = subjectcode;
  var disqus_url = window.location.origin; 
  next_element.after('<div id="disqus_thread"></div>');

так, когда кнопка нажата, loaddisqus должен выполнить, и это делает. Но это не делает ничего, кроме создания div'ов disqus_thread ... Что может быть не так?

Автор: PowerLove Источник Размещён: 22.08.2016 08:46

Ответы (1)


0 плюса

708 Репутация автора

во-первых, вы пытаетесь смешать простой javascript и jquery (не очень хорошая идея)

возможно, вы можете попробовать что-то вроде этого:

var btn = $('<button>').html('Duscussion').on('click', btnClickListener);
$('body').append(btn);

var btnClickListener = function(event){
  var clickedElement = $(this); // get the clicked element
  clickedElement.html('new Text'); // do what you want (i.e. change the content of the clicked button)
}

во-вторых, вы пытаетесь использовать ссылку (a-tag) в качестве кнопки. проблема в том, что ссылка всегда пытается переместить вашу страницу к цели href. кнопка должна быть кнопкой, а не ссылкой. если вам нужна ссылка из-за стиля или чего-то еще, вы должны использовать функцию прослушивания примерно так:

var linkButton = $('<a>').attr('href', '#').html('click here').on('click', linkButtonListener);
$('body').append(linkButton);

var linkButtonListener = function(event){
  event.stopPropagation(); // stops actions from all parent elements
  event.preventDefault(); // stops the default actions of the link
  var clickedButton = $(this); // get the clicked element
  clickedButton.html('allready clicked'); // do what you want (i.e. change the content of the link)
}

Я надеюсь, что это поможет вам понять, как слушатели с jquery работают очень просто.

И последнее, вы пытаетесь включить тег скрипта и надеетесь, что скрипт запустится после нажатия на вашу кнопку. но это не работает в JavaScript. все скрипты будут загружены один раз. Вы не можете выполнить его, добавив тег script после того, как документ будет готов. если вы хотите этого, вы должны выполнить его вручную (возможно, с помощью функции eval), но это не самый лучший способ. Я думаю, что есть некоторые фреймворки, которые могут включать скрипты по действию и делать их исполняемыми. я знаю, что это не работает, и никогда не использовал это.

Автор: mtizziani Размещён: 22.08.2016 09:06
Вопросы из категории :
32x32