有没有人对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之外没有做任何其他事情...... 可能有什么不对?
答案 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函数),但这不是好方法。有一些框架可以通过操作包含脚本,并使我认为它们可执行。我知道它不起作用,从未使用它。