2016-08-22 14 views
0

Hat jemand Erfahrung mit Disqus? Ich füge Schaltflächen zu der bestehenden Website und wenn Knopf gedrückt wird, sollte es disques Kommentare auslösen.Wird beim Klicken auf die Schaltfläche nicht ausgelöst

Am Anfang wird diese

laufen
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); 

}

dann,

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>'); 

so, wenn die Taste gedrückt wird, loaddisqus ausführen soll, und es tut. Aber es macht nichts weiter als das Erstellen der disqus_thread divs ... Was könnte falsch sein?

Antwort

0

erste Sache, versuchen Sie klar zu mischen JavaScript und jQuery (keine gute Idee)

Sie vielleicht so etwas wie dies versuchen:

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) 
} 

Sekunde ist, Sie versuchen, eine Verbindung zu verwenden (a-tag) als Schaltfläche. Das Problem ist, dass ein Link immer versucht, Ihre Seite auf das href-Ziel zu verlagern. Eine Schaltfläche sollte eine Schaltfläche sein, keine Verknüpfung. wenn Sie einen Link wegen Stil oder etwas brauchen, müssen Sie Ihre Zuhörer Funktion zu so etwas wie dies aufwenden:

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) 
} 

ich hoffe, dass hilft Ihnen, zu verstehen, wie die Zuhörer mit jquery sehr einfach funktioniert.

Letzte Sache, Sie versuchen, ein Skript-Tag zu aktivieren und hoffe, dass das Skript nach dem Klicken auf Ihre Schaltfläche ausgeführt wird. aber das funktioniert nicht in Javascript. Alle Skripte werden einmal geladen. Sie können es nicht ausführen, indem Sie nach der Fertigstellung des Dokuments ein Skript-Tag hinzufügen. Wenn Sie das wollen, müssen Sie es manuell ausführen (vielleicht mit Eval-Funktion), aber es ist nicht der feine Weg. Es gibt einige Frameworks, die Skripte nach Aktion beinhalten können und sie ausführbar machen, denke ich. Ich weiß, dass es nicht funktioniert und es nie benutzt hat.

+0

Sie haben absolut Recht, ich meine, als ich den Code schrieb, fühlte ich das gleiche, weil ich wirklich neu in Javascript bin .... aber ich meine, der Punkt ist, dass ich denke, ich mache etwas falsch mit der eher Disqus-Endpunkt, denn obwohl der Code hässlich und nicht im richtigen Format sein kann, funktioniert er immer noch und das Skript wird zum richtigen Zeitpunkt ausgeführt, während ich es überprüfe und debugge. Nur dass Disqus nach dem hinzugefügten div-Tag suchen und die Kommentare automatisch an ihrem Ende laden soll ... – PowerLove

Verwandte Themen