单击按钮时{Disqus}

时间:2016-08-22 20:46:54

标签: javascript jquery html disqus

有没有人对Disqus有经验? 我正在向现有网站添加按钮,当按下按钮时,它应该触发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,它会执行。但它除了创建disqus_thread div之外没有做任何其他事情...... 可能有什么不对?

1 个答案:

答案 0 :(得分:0)

首先,你尝试混合普通的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中不起作用。所有脚本都将加载一次。在文档准备好后,您无法通过添加脚本标记来执行它。如果你想要这个,你必须手动执行(也许使用eval函数),但这不是好方法。有一些框架可以通过操作包含脚本,并使我认为它们可执行。我知道它不起作用,从未使用它。

相关问题