2016-08-22 5 views
0

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를 만드는 것 이상으로 아무것도하지 않습니다 ... 무엇이 잘못 될 수 있습니까? 당신이 링크를 (사용하려고

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

초은 다음과 같습니다

아마도 당신이 뭔가를 시도 할 수 있습니다 자바 스크립트와 JQuery와 (좋은 생각)

답변

0

먼저, 당신은 일반 혼합하려고 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로 청취자은 매우 간단 어떻게 작동하는지 이해하는 데 도움이되기를 바랍니다.

마지막으로 스크립트 태그를 사용하도록 설정하고 버튼을 클릭 한 후 스크립트가 실행되기를 바랍니다. 하지만이 자바 스크립트에서 작동하지 않습니다. 모든 스크립트는 한 번로드됩니다. 문서 준비가 끝나면 스크립트 태그를 추가하여 실행할 수 없습니다. 만약 당신이 이것을 원한다면, 당신은 수작업으로 (아마도 eval 함수로) 그것을 실행해야만합니다. 그러나 그것은 좋은 방법이 아닙니다. 액션별로 스크립트를 포함 할 수있는 프레임 워크가 있으며 실행 가능한 것으로 생각할 수 있습니다. 나는 그것이 작동하지 않으며 결코 그것을 사용하지 않는다는 것을 압니다.

+0

당신은 절대적으로 옳다. 나는 코드를 작성하면서 자바 스크립트에 처음으로 익숙해 졌기 때문에 같은 것을 느꼈다.하지만 중요한 것은 내가 뭔가 잘못하고 있다고 생각한다. 오히려 Disqus 엔드 포인트입니다. 왜냐하면 코드가 추악하고 올바른 형식이 아니더라도 여전히 작동하고 스크립트는 적절한 시간에 실행됩니다. 체크하고 디버깅 할 때입니다. 그냥 그 Disqus가 추가되고 그들의 끝에 코멘트를 자동으로로드 div 태그를 찾아야한다 ... – PowerLove

관련 문제